그래서 한자를 포함하는 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 인코딩을 추가합니다.