你如何制作转换表?

时间:2013-06-18 14:48:17

标签: delphi encoding delphi-xe2 type-conversion ebcdic

我需要制作一些ebcdic_1141 / cp1252转换。 以下是我找到的表格:

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

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

谢谢, 雅各布

1 个答案:

答案 0 :(得分: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 API MultiByteToWideCharPAnsiChar转换为UTF-16,然后将其转换回1252
  4. 使用像Jedi CodeLib这样具有现成包装器的库,在一次调用中执行#3触发器。
  5. 请注意,您不应期望在这些字符集之间映射所有字符。一些稀有字符(如控制代码和变音符号)可能只存在于其中一个字符集中,并且可能会从其对应字符中丢失。 WideCharToMultiByte函数具体提到了这一点。


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

    1. 前面提到的JCL.sf.net有自己的JclUnicode单元,它可能有自己的内置映射,而不是依赖于Windows提供的映射。我不记得是否包含IBM1141
    2. IBM Classes for Unicode也可能包含这些代码页(或者可能没有,但可能会包含这些代码页)。 Has anyone used ICU with Delphi?
    3. iconv库在UNIX系统上启动,但是将CodeTyphon / Lazarus之类的IDE移植回Windows,他们应该将libiconv移植到Windows(可能是MSYS项目)并包含Pascal标头。尝试安装下载CodeTyphon,看看你是否可以在Delphi中重用它的libiconv单元。