How to convert a file from ASCII to UTF-8?
我正在尝试将一堆A文件从ASCII转换成UTF-8。
为此,我尝试使用
1 | iconv -f US-ASCII -t UTF-8 infile > outfile |
但那个文件没有转换成UTF-8。这是一个.dat文件。
在发布这篇文章之前,我搜索了谷歌并找到了如下信息:
ASCII is a subset of UTF-8, so all ASCII files are already UTF-8 encoded. The bytes in the ASCII file and the bytes that would result from"encoding it to UTF-8" would be exactly the same bytes. There's no difference between them.
强制从US-ASCII编码到UTF-8(ICONV)
在字符集之间转换文本文件的最佳方法?
但是上面的链接没有帮助。
尽管它是ASCII格式的,但它将支持UTF-8,因为UTF-8是一个超级集,从我这里接收文件的另一方需要文件编码为UTF-8。他只需要UTF-8格式的文件。
有什么建议吗?
我对这个问题有点困惑,因为正如您所指出的,ASCII是UTF-8的一个子集,所以所有的ASCII文件都已经是UTF-8编码的。
如果您正在向另一方发送只包含ASCII字符的文件,但另一方抱怨它们不是"UTF-8编码的",那么我猜它们是指ASCII文件没有明确指示内容是UTF-8的字节顺序标记这一事实。
如果确实如此,那么可以使用下面的答案添加字节顺序标记:
ICONV:使用BOM从Windows ANSI转换为UTF-8
如果另一方表示不需要"bom"(字节顺序标记),但仍在抱怨文件不是utf-8,则另一种可能是初始文件实际上不是ASCII,而是包含使用ANSI或ISO-8859-1编码的字符。
在RAM对使用"file"命令查找类型的另一方作出评论后,编辑以添加以下实验
1 2 3 4 5 6 7 8 9 10 11 | 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 |