如何使用 iconv 从 US-ASCII 转换为 UTF-8?

How Can I Convert From US-ASCII to UTF-8 with iconv?

我正在尝试将多个文件从 US-ASCII 批量转换为 UTF-8。我已经将问题缩小到 iconv 命令,尽管我对 Stack Overflow 进行了最好的搜索,但我似乎用错了。知道这里出了什么问题吗?

正在检查编码:

file -i accounting.cfm
accounting.cfm: text/html; charset=us-ascii

尝试使用 iconv 转换:

iconv -f us-ascii -t utf-8 accounting.cfm > accounting.cfm.recode

检查结果文件的编码:

file -i accounting.cfm.recode
accounting.cfm.recode: text/html; charset=us-ascii

生成的文件似乎仍针对 US-ASCII 字符集进行了编码。当我通过 Sublime 将单个文件保存为 UTF-8(使用编码保存)时,它显示字符集为 utf-8。我知道 US-ASCII 是 UTF-8 的一个子集,但是当我在浏览器中打开 US-ASCII 编码文件时,我得到了垃圾字符(如果在浏览器中加载,菱形中可怕的问号)。这是针对遗留 ColdFusion 站点的。当我通过 Sublime 调出使用编码保存的文件时,我的外来字符集正确显示。任何想法我做错了什么?谢谢。

所以我想通了。 ColdFusion 确实需要 BOM 才能正常工作,除非您想在每个可能包含非 ASCII 字符的 CFM 文件的顶部放置一个 <cfprocessingdirective pageencoding="utf-8"> 标签。参考:

https://forums.adobe.com/thread/930550 https://www.adobe.com/support/coldfusion/internationalization/internationalization_cfmx/internationalization_cfmx3.html

我是 Sublime 用户,所以我只是转到文件 -> 使用编码保存,带有 BOM 的 UTF-8,它在没有标签的情况下工作。然后我很高兴我大部分时间都在 Python 3!