我需要进行一些 ebcdic_1141/cp1252 转换。这是我找到的表格:
你如何从中制作转换表。我特别不明白的是 40 之前的十六进制值是什么?以及如何获取每个字符的十六进制值(我将其放入数组中)?
谢谢,雅各布
我需要进行一些 ebcdic_1141/cp1252 转换。这是我找到的表格:
你如何从中制作转换表。我特别不明白的是 40 之前的十六进制值是什么?以及如何获取每个字符的十六进制值(我将其放入数组中)?
谢谢,雅各布
至少从 Windows 2000 开始,IBM 1141 似乎已经成为 Windows NT 的一部分。只需要求系统管理员通过控制面板/Windows 组件安装它。
http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756.aspx
然后,根据您的 Delphi 版本,您可以
AnsiString
指定的代码页(又名分配UnicodeString string
)和/或使用SetCodePage
程序MultiByteToWideChar
转换PAnsiChar
为 UTF-16,然后再转换回 1252Jedi CodeLib
具有现成包装器的库,在一次调用中执行 #3 触发器。请注意,您不应期望在这些字符集之间映射所有字符。一些罕见的字符,如控制代码和变音符号,可能只出现在其中一个字符集中,而在对应的字符集中会被遗漏。WideCharToMultiByte
函数特别提到了这一点。
替代方法(不一定成功)可能包括:
JCL.sf.net
单元,它可能有它自己的内置映射,而不是依赖于 Windows 提供的映射。我不记得是否IBM1141
包括在内。IBM Classes for Unicode
也可能包含这些代码页(或者可能不包含,但可能会包含)。有人用过Delphi的ICU吗?iconv
库在 UNIX 系统上开始,但是随着 IDE 的移植,例如CodeTyphon
/Lazarus
回到 Windows,它们应该已经libiconv
移植到 Windows(可能作为MSYS
项目的一部分)并包含它的 Pascal 头文件。libiconv
尝试安装下载 CodeTyphon 并查看是否可以在 Delphi中重用其单元。