java - 导出文件时出现编码问题

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

立陶宛文件已导入到as400。在那里,文本存储在编码EBCDIC中。将数据导出到ANSI文件,然后读取为Windows-1257。 ASCII字符可以很好地工作,立陶宛语也可以,但是其余字符看起来像废话,带有〜,¶和]这样的字符。

字符串示例

开始文件
图斯库洛

as400
图斯库洛
EAA9A9596
34224335A

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

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

有任何想法吗?

问候,
卡尔

最佳答案

EBCDIC不是单一编码,它是一个编码家族(在本例中称为代码页),类似于ISO-8859-*是一个编码家族:这些家族中的编码共享“基本”字母的大约一半代码(大约是ASCII中的内容),另一半则有所不同。

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

ANSI也存在类似的问题:当用于编码时,它指的是Windows默认编码。不幸的是,Windows安装的默认编码可能会根据配置的语言环境而有所不同。

再说一遍:您需要找出此处使用的是哪种实际编码(通常来自Windows-*家族,即“正常的”英文s Windows-1252)。

一旦真正了解了每种编码的要求,就可以进行第二步:修复它。

我个人对此类问题的偏爱是这样的:仅转换编码的一个步骤:提取初始工具产生的一切,然后在第一步将其转换为UTF-8。从那时起,请始终使用UTF-8处理该数据。如有必要,请在最后一步将UTF-8转换为其他编码(但请尽可能避免这样做)。

本文翻译自 https://stackoverflow.com/questions/7441046/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java encoding ibm-midrange


相关文章:

c++ - 在C ++中设置编码的最正确方法是什么?

c# - C#SerialPort编码转换为字节[]

database - 如何从AS / 400(IBM iSeries)-VB加快SELECT查询的速度。 NET编程

java - 在写入内容之前在HttpUrlConnection上调用getResponseCode会引发IOException

java - Java虚拟机(JVM)及其性能比较

java - javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:

mysql - Unicode MySQL数据在XML中创建编码错误

java - Java中的置换组实现

java - 如何将用户定义的用户名从IBM Websphere Application Server传递到AS400 MQ服务器以进行认证?

php - Linux odbc致命错误:允许的内存大小