日本字符编码

时间:2016-03-17 04:25:52

标签: windows delphi delphi-xe

我有日本串'ぱはめ'。我想把它转换成'%82%CF%82%CD%82%DF'。我希望有人会给我这个转换的功能。

1 个答案:

答案 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特定的多字节编码仍在使用中,这有点令人惊讶。