【发布时间】:2015-04-07 10:43:02
【问题描述】:
我正在尝试将一堆文件从 ASCII 转码为 UTF-8。
为此,我尝试使用iconv:
iconv -f US-ASCII -t UTF-8 infile > outfile
-f ENCODING输入的编码
-t ENCODING输出的编码
该文件仍然没有转换为 UTF-8。它是一个 .dat 文件。
在发布之前,我搜索了谷歌并找到了如下信息:
ASCII 是 UTF-8 的一个子集,因此所有 ASCII 文件都已经是 UTF-8 编码的。 ASCII 文件中的字节和“将其编码为 UTF-8”产生的字节将是完全相同的字节。它们之间没有区别。
Force encode from US-ASCII to UTF-8 (iconv)
Best way to convert text files between character sets?
以上链接仍然没有帮助。
即使是ASCII码也支持UTF-8,因为UTF-8是一个超集,接收我文件的对方需要文件编码为UTF-8。他只需要UTF-8的文件格式。
请有任何建议。
【问题讨论】:
-
根本不清楚问题出在哪里 - 只需将原始 ASCII 文件提供给此人即可。如果它们是真正的 ASCII,它们已经是 UTF-8,所以它们应该没问题。究竟出了什么问题?
-
@Jon Skeet 对方期望文件格式为 UTF-8,当我尝试使用命令 file -i outfile 它返回 ascii 但他们严格希望它为 utf-8。尽管 ascii 是 utf-8 的子集。
-
如果它是真正的 ASCII,它是“严格的 UTF-8”。根据您的评论,如果对方因为
file的输出而拒绝 ASCII 文件,那么听起来对方基本上是坏了。他们应该接受 ASCII 文件是 UTF-8 文件,并继续处理它。 -
@JonSkeet 在没有更多细节的情况下,我倾向于同意。可能值得建议和鼓励他们接受来自“文件”的两个回复。他们的 API 将更加灵活和健壮,他们将不必与使用它的其他人反复进行精确的讨论。如果他们不能或不愿意这样做,那么至少在他们的文档中非常明确地声明输入文件中需要 BOM,使用这种精确的语言,也可能会有很长的路要走。
标签: linux unix encoding utf-8 ascii