This conversion is generally used for webpage addresses. I don't know if Delphi has a ready-made function.
// Function: function toutf8encode (STR: string): string; var B: byte; begin for B in bytesof (utf8encode (STR) do result: = format ('% S %. 2x ', [result, B]); end; // test: var STR: string; begin STR: =' '; STR: = toutf8encode (STR ); showmessage (STR); // % E4 % B8 % 87% E4 % B8 % 80end;
I wrote a reverse function for "Xiaoyue 124:
Function toutf8decode (const STR: string): string; var list: tstrings; tmpstr: ansistring; I: integer; begin list: = tstringlist. create; extractstrings (['%'], ['%'], pchar (STR), list); setlength (tmpstr, list. count); for I: = 0 to list. count-1 do byte (tmpstr [I + 1]): = strtoint ('$' + list [I]); list. free; Result: = utf8decode (tmpstr); end; {call test} procedure tform1.formcreate (Sender: tobject); var S1: ansistring; S2: widestring; begin S1: = '% E4 % B8 % 87% E4 % B8 % 80'; S2: = toutf8decode (S1); showmessage (S2); {In case} end;