提问者:小点点

如何将文件从ASCII转换为UTF-8?


我试图转码一堆文件从ASCII到UTF-8。

为此,我尝试使用icon v

iconv -f US-ASCII -t UTF-8 infile > outfile

-f ENCODING输入的编码

-t ENCODING输出的编码

该文件仍然没有转换为UTF-8。它是一个. dat文件。

在发布此内容之前,我搜索了Google并找到了以下信息:

ASCII是UTF-8的子集,因此所有ASCII文件都已经UTF-8编码。ASCII文件中的字节和“将其编码为UTF-8”产生的字节完全相同。它们之间没有区别。

强制编码从US-ASCII到UTF-8(icon)

在字符集之间转换文本文件的最佳方法?

上面的链接仍然没有帮助。

即使它是在ASCII中,它也支持UTF-8,因为UTF-8是一个超集,要从我这里接收文件的另一方需要文件编码为UTF-8。他只需要文件格式为UTF-8。

请有任何建议。


共1个答案

匿名用户

我对这个问题有点困惑,因为正如您所指出的,ASCII是UTF-8的子集,因此所有ASCII文件都已经UTF-8编码。

如果您向另一方发送的文件只包含ASCII字符,但另一方抱怨它们没有UTF-8编码,那么我猜他们指的是ASCII文件没有字节顺序标记,明确表示内容UTF-8。

如果确实是这种情况,那么您可以使用此处的答案添加字节顺序标记:

使用BOM从Windows ANSI转换为UTF-8

如果对方表示他不需要'BOM'(字节顺序标记),但仍然抱怨文件不是UTF-8,那么另一种可能性是您的初始文件实际上不是ASCII,而是包含使用ANSI或ISO-8859-1编码的字符。

在Ram评论对方使用“文件”命令寻找类型后,编辑以添加以下实验

Tims-MacBook-Pro:~ tjohns$ echo 'Stuff' > deleteme
Tims-MacBook-Pro:~ tjohns$ cat deleteme
Stuff
Tims-MacBook-Pro:~ tjohns$ file -I deleteme
deleteme: text/plain; charset=us-ascii
Tims-MacBook-Pro:~ tjohns$ echo -ne '\xEF\xBB\xBF' > deleteme
Tims-MacBook-Pro:~ tjohns$ echo 'Stuff' >> deleteme
Tims-MacBook-Pro:~ tjohns$ cat deleteme
Stuff
Tims-MacBook-Pro:~ tjohns$ file -I deleteme
deleteme: text/plain; charset=utf-8