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

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 인코딩을 추가합니다.

관련 정보