我正在尝试使用一些针对中国公司发布的API的代码.我有一个规范和一些示例代码(在Java中)足以理解大部分正在发生的事情,但我碰到了一件我不知道该怎么做的事情.
String ecodeform = "GBK";
String sm = new String(Hex.encodeHex("Insert message here".getBytes(ecodeform))); //test message
Run Code Online (Sandbox Code Playgroud)
它是从原始字符串的十六进制表示的char数组结果创建一个字符串,以GBK格式编码(标准的中文字符编码,相当于英文文本的ASCII.)我可以弄清楚如何在Delphi中完成大部分工作,但我不知道如何将字符串编码为GBK,这是此API特别要求的.
在SysUtils,有一个TEncoding自带的几个内置的编码,如阶级UTF8,UTF16和"默认"(该系统的默认代码页),但我不知道如何建立一个TEncoding对于任意编码,如GBK .
有谁知道如何设置它?
您可以使用该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;
Run Code Online (Sandbox Code Playgroud)