我试图让一些代码针对中国公司发布的API。我有一个规范和一些示例代码(在Java中)足以理解大部分内容,但我遇到了一件我不知道该怎么做的事情。
String ecodeform = "GBK";
String sm = new String(Hex.encodeHex("Insert message here".getBytes(ecodeform))); //test message
它从原始字符串的十六进制表示的char数组结果创建一个字符串,以GBK格式编码(标准中文字符编码,相当于英文文本的ASCII。)我可以找出如何在Delphi中完成大部分工作,但我不知道如何将字符串编码为GBK,这是此API特别要求的。
在SysUtils
中,有一些TEncoding
类附带了一些内置编码,例如UTF8
,UTF16
和"默认" (系统的默认代码页),但我不知道如何为任意编码(如GBK)设置TEncoding。
有谁知道如何设置它?
答案 0 :(得分:8)
您可以使用TEncoding.GetEncoding()
方法获取特定代码页/字符集的TEncoding
对象,例如:
var
Enc: TEncoding;
Bytes: TBytes;
begin
Enc := TEncoding.GetEncoding(936); // or TEncoding.GetEncoding('gb2312')
try
Bytes := Enc.GetBytes('Insert message here');
finally
Enc.Free;
end;
// encode Bytes to hex string as needed...
end;
答案 1 :(得分:3)
TEncoding
有一个GetEncoding
方法。给它编码名称或编号,它将返回TEncoding
实例。
对于GBK,我认为您想要的数字是936.有关详情,请参阅Microsoft's list of code pages。