所以我有一个包含中文字符的文件 tmp.ahk,
$ cat tmp.ahk
sendText("结婚吧")
我想将文件转换为 UTF-8(带 BOM)文件。 (BOM是因为后面步骤Autohotkey需要对文件进行BOM处理)
$ file tmp.ahk
tmp.ahk: UTF-8 Unicode text
所以我使用 nkf 命令将文件转换为带有 BOM 的 UTF-8 文件,我执行了以下操作。
$ bash -c "nkf --overwrite --oc=UTF-8-BOM ./tmp.ahk"
$ file tmp.ahk
tmp.ahk: UTF-8 Unicode (with BOM) text
但之后我发现文件内容(中文文本部分被修改为乱码)
$ cat tmp.ahk
sendText("扈灘ゥ壼制")
是什么导致了这个问题?如何将包含中文文本的文件转换为UTF8-BOM而不出现乱码?谢谢。
答案1
BOM 在 UTF-8 中没有多大意义,因为字节顺序在那里无关紧要。
看起来 Autohotkey 是一个 Microsoft Windows 应用程序,这可能解释了为什么它需要它。
然后你可以这样做:
unix2dos --add-bom your-file
它还会将行分隔符从 Unix 样式 (LF) 转换为 Microsoft 样式 (CRLF)。