确认文件的编码



我正在以 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(一种很少使用的编码,在这里演示很有用,但除此之外别无他法(。

换句话说:编码只是"非法"的,因为它不能转换为ISO-8859-1,但它是一个完全有效的UTF-8序列。

如果第三方声称支持 UTF-8,那么他们可能只是非常肤浅地这样做。它们可能支持任何可以用 ISO-8859-1 编码的文本,只要它是用 UTF-8 编码的(这是"UTF-8 支持"的极低级别(。

最新更新