确认文件的编码
Confirming the encoding of a file
我正在以 UTF-8 编码从 SSIS 输出一个文件。
该文件被传递给第三方以导入到他们的系统中。
他们在导入此文件时遇到问题。虽然他们要求 UTF-8 编码,但似乎他们将编码转换为 ISO-8859-1。他们使用这个命令来转换文件编码:
iconv -f UTF-8 -t ISO-8859-1 dweyr.inp
他们收到此错误
illegal input sequence at position 11
导致问题的文本是:
ark O’Dwy
我认为是撇号,或者本文中使用的撇号的任何版本。
我面临的问题是我尝试的每个文本编辑器都告诉我该文件是 UTF-8 并正确呈现它。
供应商说这个字符不是 UTF-8。
如何确认谁是正确的?
iconv 的错误消息有点误导,但有点正确。
它并没有告诉您输入不是有效的 UTF-8,而是它不能以无损方式转换为 ISO-8859-1。 ISO-8859-1 没有办法对 ’
字符进行编码。
通过执行此命令验证:
echo "ark O’Dwy" | iconv -f UTF-8 -t UTF-7
这会产生类似于 "ark O+IBk-Dwy"
.
的输出
这里我输出的是 UTF-7(一种很少使用的编码,对这里的演示很有用,但除此之外别无他用)。
换句话说:编码只是 "illegal",因为它不能转换为 ISO-8859-1,但它是一个完全有效的 UTF-8 序列。
如果第三方声称支持 UTF-8,那么他们可能只是表面上这样做。他们 可能 支持任何可以用 ISO-8859-1 编码的文本,只要它是用 UTF-8 编码的(这是 "UTF-8 support" 的极低级别)。
我正在以 UTF-8 编码从 SSIS 输出一个文件。 该文件被传递给第三方以导入到他们的系统中。 他们在导入此文件时遇到问题。虽然他们要求 UTF-8 编码,但似乎他们将编码转换为 ISO-8859-1。他们使用这个命令来转换文件编码:
iconv -f UTF-8 -t ISO-8859-1 dweyr.inp
他们收到此错误
illegal input sequence at position 11
导致问题的文本是:
ark O’Dwy
我认为是撇号,或者本文中使用的撇号的任何版本。 我面临的问题是我尝试的每个文本编辑器都告诉我该文件是 UTF-8 并正确呈现它。 供应商说这个字符不是 UTF-8。
如何确认谁是正确的?
iconv 的错误消息有点误导,但有点正确。
它并没有告诉您输入不是有效的 UTF-8,而是它不能以无损方式转换为 ISO-8859-1。 ISO-8859-1 没有办法对 ’
字符进行编码。
通过执行此命令验证:
echo "ark O’Dwy" | iconv -f UTF-8 -t UTF-7
这会产生类似于 "ark O+IBk-Dwy"
.
这里我输出的是 UTF-7(一种很少使用的编码,对这里的演示很有用,但除此之外别无他用)。
换句话说:编码只是 "illegal",因为它不能转换为 ISO-8859-1,但它是一个完全有效的 UTF-8 序列。
如果第三方声称支持 UTF-8,那么他们可能只是表面上这样做。他们 可能 支持任何可以用 ISO-8859-1 编码的文本,只要它是用 UTF-8 编码的(这是 "UTF-8 support" 的极低级别)。