だから漢字を含む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
UTF-8ではバイトオーダーは重要ではないので、BOMはあまり意味がありません。
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エンコーディングを追加します。