我有日本串'ぱはめ'。我想把它转换成'%82%CF%82%CD%82%DF'。我希望有人会给我这个转换的功能。
答案 0 :(得分:1)
您需要获取字符串并在特定代码页中对其进行编码。然后取每个编码的字节并生成其十六进制表示。像这样:
function MyEncode(const S: string; const CodePage: Integer): string;
var
Encoding: TEncoding;
Bytes: TBytes;
b: Byte;
sb: TStringBuilder;
begin
Encoding := TEncoding.GetEncoding(932);
try
Bytes := Encoding.GetBytes(S);
finally
Encoding.Free;
end;
sb := TStringBuilder.Create;
try
for b in Bytes do begin
sb.Append('%');
sb.Append(IntToHex(b, 2));
end;
Result := sb.ToString;
finally
sb.Free;
end;
end;
虽然您没有说明这一点,但您希望将文本编码为代码页932.因此,您应该在调用函数时传递该值。
Writeln(MyEncode('ぱはめ', 932));
我必须说,在现代,看到这种Windows特定的多字节编码仍在使用中,这有点令人惊讶。