我正在尝试将 UTF-8 文件转换为 EBCDIC IBM284,但 java 将 0A (\n) 转换为 0x15,而不是我们主机使用的标准 0x25。在网上搜索后,我发现您可以将选项 ibm.swaplf 设置为 true 以更改此行为,但 jvm 似乎忽略了它。
System.setProperty("ibm.swaplf", "true");
在 transformig 之后,我得到了这个输出:
INFO TestParser : UTF8: €~Ñ}ÇçLF
CRLF
INFO HexaStrings : ******** HEX ************************************************
INFO HexaStrings : € Ñ }Ç ç LF CRLF
INFO HexaStrings : e8a7c97c8ca440454400
INFO HexaStrings : 22ce31d3737c6a32c6da
INFO HexaStrings : ******** FIN HEX ********************************************
INFO TestParser : EBCDIC 284: ?½{ÐhHÓÆÃÙÓÆ
INFO HexaStrings : ******** HEX ************************************************
INFO HexaStrings : ?½ {Ð hHÓ Æ Ã Ù Ó Æ
INFO HexaStrings : 3cb7c964c9c81c8c9c9c801
INFO HexaStrings : f2db30883336533393336d5
INFO HexaStrings : ******** FIN HEX ********************************************
我期待 0A 转换为 25 而不是 15。有什么想法吗?
解决方案:使用 IBM1145 代替 IBM284 解决了这个问题。