我正在尝试使一些代码与中国公司发布的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类,它带有一些内置编码,例如UTF8UTF16和“ Default”(系统的默认代码页),但是我不知道如何为任意编码(例如GBK)设置TEncoding。

有人知道如何设置吗?

最佳答案

您可以使用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;

10-01 09:50