ASCII 텍스트 형식을 UTF-8로 변환해야 합니다.
다음은 명령을 통해 수행하는 작업입니다 iconv
.
[root@main tmp]# 고양이 파일 1 1 5 6 [root@main tmp]# 파일 File1 파일 1: ASCII 텍스트 [root@main tmp]# iconv -f ascii -t utf-8 파일 1 > 파일 2 [root@main tmp]# 파일 File2 파일 2: ASCII 텍스트
(여전히 ASCII, utf-8 아님)
이것을 ascii에서 utf-8로 변환하는 방법에 대한 제안이 있습니까?
답변1
여기에는 두 가지가 관련됩니다.
file
Solaris의 주식 유틸리티가 형편없습니다.- 7비트 ASCII 문자는 바이트 호환 방식으로 UTF-8에 포함됩니다. 이는 입력 파일에 7비트 ASCII 문자만 포함되어 있으면 실제 변환이 발생하지 않음을 의미합니다. 좋은
file
유틸리티라도 ASCII를 표시합니다.
따라서 파일을 "확장" 8바이트 ASCII 인코딩으로 변환할 수 있습니다. 예를 들어라틴어 1. 그런 다음 iconv를 사용하여 이를 지정해야 합니다. 예를 들면 다음과 같습니다.
$ iconv -f latin1 -t utf8 file1 > file2
그러면 다음과 같이 출력을 비교할 수 있습니다.
$ cmp file1 file2
$ hexdump ...
$ $EDITOR file2
vim과 같은 편집기는 특정 문자의 바이트 값을 보고, 사용된 인코딩을 동적으로 변경하는 등의 명령을 제공합니다.
답변2
file
ASCII 파일이 UTF-8(이미 UTF-8)임을 선언 하고 싶다면 UTF-8을 앞에 추가하는 이 명령을 실행할 수 있습니다.BOM(바이트 순서 표시)그것에:
(printf "\357\273\277";cat File1) > File2
편집: 하지만 몇 가지 질문이 있습니다.
이는 Linux 배포판이 일반적으로 제공하는 조회 버전에서 작동하지만 Solaris는
file
파일을 UTF-8로 감지하지 않고 "data"만 감지합니다.BOM은 텍스트 파일을 처리하는 데 사용되는 도구를 혼동할 수 있습니다.