导出文件的编码问题

时间:2011-09-16 06:39:57

标签: java encoding ibm-midrange

我正在试图找出集成项目中发生了什么。我们无法在最后得到正确的编码。

立陶宛文件已导入as400。在那里,文本存储在编码EBCDIC中。将数据导出到ANSI文件,然后读取为windows-1257。 ASCII字符工作正常,一些立陶宛语可以,但其余的看起来像垃圾,如〜,¶和]。

执行管道的示例字符串

启动文件
Tuskulënö

AS400
Tuskulënö
EAA9A9596
34224335A

导出的文件(转换为windows-1257后)
Tuskulėnö

导出文件的预期结果
Tuskulėnų

有什么想法吗?

此致 卡尔

1 个答案:

答案 0 :(得分:5)

EBCDIC不是单一编码,它是一系列编码(在这种情况下称为代码页),类似于ISO-8859-*是一系列编码:家庭内的编码共享约一半“基本”字母的代码(大致是ASCII中存在的字母),另一半则不同。

因此,如果您说它存储在EBCDIC中,您需要告诉我们使用了哪个代码页

ANSI存在类似的问题:当用于编码时,它指的是Windows默认编码。遗憾的是,Windows安装的默认编码可能因配置的区域设置而异。

再次:你需要找出这里使用的实际编码(这些编码通常来自Windows-*系列,“普通”英文版本Windows-1252)。

一旦你实际知道 想要的每个点,你就可以迈出第二步:修复它。< / p>

我的个人偏好对于这类问题是这样的:只有一个步骤转换编码:采取初始工具生成的任何内容并将其转换为UTF-8在第一步。从那时起,始终使用UTF-8来处理该数据。如果需要,可以在最后一步将UTF-8转换为其他编码(但如果可能的话,请避免使用)。