我已经用 Perl 从我们的数据库 AS/400 DB2 中导入了一个表。
问题是字符串是用 EBCDIC Latin-1(意大利语)编码的。
如何在 Linux bash 中将生成的文件转换为纯 utf-8?
从...开始
iconv -f EBCDIC-IT -t utf-8 <filename>
然后检查输出,如果不完全正确,请检查.man iconv
列出的可用编码iconv -l
。
(请注意,“EBCDIC Latin-1”有点奇怪。“Latin-1”表示 ISO-8859-1,而“EBCDIC”则完全是另外一回事。试着file <filename>
让计算机对你实际上是什么编码进行有根据的猜测看着。)
我对以下行很幸运:
iconv -f IBM037 -t utf-8 input_ebcdic.txt -o output.txt
这很简单iconv
。
iconv -f ISO8859-1 -t "UTF-8" result.csv -o new_result.csv
ISO8859-1 是 Latin-1 编码格式。有关编码列表,请参阅 IBM 官方文档中的此表:https ://www.ibm.com/support/knowledgecenter/ssw_aix_53/com.ibm.aix.nls/doc/nlsgdrf/iconv.htm%23d722e3a267mela
请注意,转换可能会留下来自 EBCDIC 的无效 UTF-8 字符。一个示例是字符串中的 NULL 字符。为避免这种情况,请使用 HEX 编辑器并将十六进制值替换为 00 到 20(空格字符)。