ASCII에서 utf-8 형식으로 변환 - iconv가 작동하지 않습니다.

ASCII에서 utf-8 형식으로 변환 - iconv가 작동하지 않습니다.

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

여기에는 두 가지가 관련됩니다.

  1. fileSolaris의 주식 유틸리티가 형편없습니다.
  2. 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

fileASCII 파일이 UTF-8(이미 UTF-8)임을 선언 하고 싶다면 UTF-8을 앞에 추가하는 이 명령을 실행할 수 있습니다.BOM(바이트 순서 표시)그것에:

(printf "\357\273\277";cat File1) > File2

편집: 하지만 몇 가지 질문이 있습니다.

  • 이는 Linux 배포판이 일반적으로 제공하는 조회 버전에서 작동하지만 Solaris는 file파일을 UTF-8로 감지하지 않고 "data"만 감지합니다.

  • BOM은 텍스트 파일을 처리하는 데 사용되는 도구를 혼동할 수 있습니다.

관련 정보