-3

我需要进行一些 ebcdic_1141/cp1252 转换。这是我找到的表格:

http://publib.boulder.ibm.com/infocenter/pcomhelp/v5r9/index.jsp?topic=/com.ibm.pcomm.doc/reference/html/hcp_reference02.htm

你如何从中制作转换表。我特别不明白的是 40 之前的十六进制值是什么?以及如何获取每个字符的十六进制值(我将其放入数组中)?

谢谢,雅各布

4

1 回答 1

1

至少从 Windows 2000 开始,IBM 1141 似乎已经成为 Windows NT 的一部分。只需要求系统管理员通过控制面板/Windows 组件安装它。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756.aspx

然后,根据您的 Delphi 版本,您可以

  1. 使用 TEncoding 类
  2. 使用AnsiString指定的代码页(又名分配UnicodeString string)和/或使用SetCodePage程序
  3. 使用 Win32 APIMultiByteToWideChar转换PAnsiChar为 UTF-16,然后再转换回 1252
  4. 使用Jedi CodeLib具有现成包装器的库,在一次调用中执行 #3 触发器。

请注意,您不应期望在这些字符集之间映射所有字符。一些罕见的字符,如控制代码和变音符号,可能只出现在其中一个字符集中,而在对应的字符集中会被遗漏。WideCharToMultiByte函数特别提到了这一点。


替代方法(不一定成功)可能包括:

  1. 上述有它自己的JclUnicodeJCL.sf.net单元,它可能有它自己的内置映射,而不是依赖于 Windows 提供的映射。我不记得是否IBM1141包括在内。
  2. IBM Classes for Unicode也可能包含这些代码页(或者可能不包含,但可能会包含)。有人用过Delphi的ICU吗?
  3. iconv库在 UNIX 系统上开始,但是随着 IDE 的移植,例如CodeTyphon/Lazarus回到 Windows,它们应该已经libiconv移植到 Windows(可能作为MSYS项目的一部分)并包含它的 Pascal 头文件。libiconv尝试安装下载 CodeTyphon 并查看是否可以在 Delphi中重用其单元。
于 2013-06-18T17:16:09.997 回答