nkf UTF-8有汉字吗?

nkf UTF-8有汉字吗?

所以我有一个包含中文字符的文件 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)。

答案2

塔列津的评论,GNU 实现sed

sed -i .bak '1s/^/\xef\xbb\xbf/' tmp.ahk

在第一行开头添加 BOM (U+FEFF) 字符的 UTF-8 编码。

相关内容