我使用DelphiXE8中的HTTPEncode()函数来编码日语文本。有些字符可以正确编码,但有些则不能。以下是一个例子:
aStr := HTTPEncode('萩原小学校');我预料到:
aStr = '%E8%90%A9%E5%8E%9F%E5%B0%8F%E5%AD%A6%E6%A0%A1'但我得到了这个
aStr = '%E8%90%A9%E5%8E%9F%E5%B0%8F%3F%E6%A0%A1'有人能帮我把'萩原小学校'编码成'%E8%90%A9%E5%8E%9F%E5%B0%8F%E5%AD%A6%E6%A0%A1'吗?
发布于 2018-03-13 17:10:27
“大卫·赫弗南,”雷米·莱博,非常感谢你抽出时间来帮助我。您的回答使我理解了为什么不能用HTTPEncode转换字符串。
我自己已经试过很多次了,直到我发现了这个:Delphi: Convert from windows-1251 to Shift-JIS
function MyEncode(const S: string; const CodePage: Integer): string;
var
Encoding: TEncoding;
Bytes: TBytes;
b: Byte;
sb: TStringBuilder;
begin
Encoding := TEncoding.GetEncoding(CodePage);
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; MyEncode('萩原小学校',65001);
输出= %E8%90%A9%E5%8E%9F%E5%B0%8F%E5%AD%A6%E6%A0%A1
https://stackoverflow.com/questions/49227301
复制相似问题