导出文件时出现编码问题

发布于 2024-12-04 18:21:04 字数 448 浏览 1 评论 0原文

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

立陶宛文件已导入 as400。在那里,文本以 EBCDIC 编码存储。将数据导出到 ANSI 文件,然后读取为 windows-1257。 ASCII 字符工作得很好,有些立陶宛语也可以,但其余的字符看起来像 ~、¶ 和 ] 之类的垃圾。

穿过管道的示例字符串

启动文件
Tuskulënö

as400
图斯库拉诺
EAA9A9596
34224335A

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

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

有什么想法吗?

问候, 卡尔

I'm trying to find out what has happen in an integration project. We just can't get the encoding right at the end.

A Lithuanian file was imported to the as400. There, text is stored in the encoding EBCDIC. Exporting the data to ANSI file and then read as windows-1257. ASCII-characters works fine and some Lithuanian does, but the rest looks like crap with chars like ~, ¶ and ].

Example string going thou the pipe

Start file
Tuskulënö

as400
Tuskulënö
EAA9A9596
34224335A

exported file (after conversion to windows-1257)
Tuskulėnö

expected result for exported file
Tuskulėnų

Any ideas?

Regards,
Karl

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独陪着我 2024-12-11 18:21:04

EBCDIC 不是单一编码,它是一系列编码(在本例中称为代码页),类似于 ISO-8859-* 是一个编码系列:这些系列中的编码共享大约一半的“基本”字母代码(大致相当于 ASCII 中存在的代码),而另一半则不同。

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

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

再说一遍:您需要找出此处使用的实际编码(这些通常来自 Windows-* 系列,“正常”英语系列是 Windows-1252)。

一旦您真正知道您在每一点拥有想要什么编码,您就可以进入第二步:修复它。

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

EBCDIC isn't a single encoding, it's a family of encodings (in this case called codepages), similar to how ISO-8859-* is a family of encodings: the encodings within the families share about half the codes for "basic" letters (roughly what is present in ASCII) and differ on the other half.

So if you say that it's stored in EBCDIC, you need to tell us which codepage is used.

A similar problem exists with ANSI: when used for an encoding it refers to a Windows default encoding. Unfortunately the default encoding of a Windows installation can vary based on the locale configured.

So again: you need to find out which actual encoding is used here (these are usually from the Windows-* family, the "normal" English one s Windows-1252).

Once you actually know what encoding you have and want at each point, you can go towards the second step: fixing it.

My personal preference for this kind of problems is this: Have only one step where encodings are converted: take whatever the initial tool produces and convert it to UTF-8 in the first step. From then on, always use UTF-8 to handle that data. If necessary convert UTF-8 to some other encoding in the last step (but avoid this if possible).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文