在 Linux 中从 EBCDIC 转换为 UTF8
Conversion from EBCDIC to UTF8 in Linux
我已经用 Perl 从我们的数据库 AS/400 DB2 中导入了一个 table。
问题是字符串是用 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
很简单。
iconv -f ISO8859-1 -t "UTF-8" result.csv -o new_result.csv
ISO8859-1 是 Latin-1 编码格式。有关编码列表,请参考 IBM 官方文档中的 table:https://www.ibm.com/support/knowledgecenter/ssw_aix_53/com.ibm.aix.nls/doc/nlsgdrf/iconv.htm%23d722e3a267mela
请注意,转换可能会留下来自 EBCDIC 的无效 UTF-8 字符。一个例子是字符串中的 NULL 字符。为避免这种情况,请使用十六进制编辑器并替换从 00 到 20 的十六进制值(space 字符)。
我运气好,下面一行:
iconv -f IBM037 -t utf-8 input_ebcdic.txt -o output.txt
我已经用 Perl 从我们的数据库 AS/400 DB2 中导入了一个 table。
问题是字符串是用 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
很简单。
iconv -f ISO8859-1 -t "UTF-8" result.csv -o new_result.csv
ISO8859-1 是 Latin-1 编码格式。有关编码列表,请参考 IBM 官方文档中的 table:https://www.ibm.com/support/knowledgecenter/ssw_aix_53/com.ibm.aix.nls/doc/nlsgdrf/iconv.htm%23d722e3a267mela
请注意,转换可能会留下来自 EBCDIC 的无效 UTF-8 字符。一个例子是字符串中的 NULL 字符。为避免这种情况,请使用十六进制编辑器并替换从 00 到 20 的十六进制值(space 字符)。
我运气好,下面一行:
iconv -f IBM037 -t utf-8 input_ebcdic.txt -o output.txt