encoding — 인코딩 다루기

encoding — 인코딩 다루기

다른 시스템에서 받은 문자열이나 파일은 종종 Shift-JIS처럼 Tcl이 기본으로 쓰는 유니코드와 다른 인코딩으로 되어 있어요. 그런 데이터를 제대로 읽고 처리하려면 인코딩을 바꿔줄 수단이 필요해요. Tcl의 encoding 명령이 바로 유니코드와 다른 형식 사이의 간극을 메워 줘요.

출처: Tcl 공식 문서 — encoding

본문

시그니처

encoding option ?arg arg ...?

소개

Tcl의 문자열은 논리적으로 16비트 유니코드 문자의 시퀀스예요. 이 문자열들은 메모리에서 여러 인코딩 중 하나의 바이트 시퀀스로 표현돼요: 수정된 UTF-8(문자당 1~3바이트), 16비트 "Unicode"(문자당 2바이트, 엔디언은 호스트 아키텍처에 의존), 그리고 binary(문자당 1바이트지만 제한된 문자 범위만 처리). Tcl은 같은 문자열에 항상 같은 인코딩을 쓰리라 보장하지 않아요.

서로 다른 운영체제 인터페이스나 응용 프로그램은 Shift-JIS 같은 다른 인코딩으로 문자열을 만들 수 있어요. encoding 명령은 Unicode와 이런 형식 사이의 간극을 메우는 데 도움을 줘요.

설명

option에 따라 인코딩 관련 연산 중 하나를 수행해요. 합법적인 옵션은 다음과 같아요.

encoding convertfrom ?encoding? data

지정한 인코딩에서 data를 Unicode로 변환해요. data의 문자는 각 문자의 하위 8비트가 단일 바이트로 취급되는 이진 데이터로 다뤄져요. 결과 바이트 시퀀스는 지정 인코딩의 문자열로 취급돼요. 인코딩을 지정하지 않으면 현재 시스템 인코딩이 사용돼요.

encoding convertto ?encoding? string

string을 Unicode에서 지정 인코딩으로 변환해요. 결과는 변환된 문자열을 나타내는 바이트 시퀀스예요. 각 바이트는 유니코드 문자의 하위 8비트에 저장돼요(실제로 결과 문자열은 Tcl 관점에서 적어도 처음에는 이진 문자열이에요). 인코딩을 지정하지 않으면 현재 시스템 인코딩이 사용돼요.

encoding dirs ?directoryList?

Tcl은 파일시스템에서 추가 인코딩을 설명하는 인코딩 데이터 파일을 불러올 수 있어요. 이 명령은 *.enc 인코딩 데이터 파일의 탐색 경로를 디렉터리 목록 directoryList로 설정해요. directoryList를 생략하면 현재 탐색 경로를 이루는 디렉터리 목록을 반환해요. directoryList가 유효한 목록이 아니면 에러예요. 인코딩 데이터 파일을 탐색할 때 directoryList의 요소가 읽고 검색할 수 있는 디렉터리를 가리키지 않으면 그 요소는 무시돼요.

encoding names

현재 사용 가능한 모든 인코딩의 이름 목록을 반환해요. "utf-8""iso8859-1" 인코딩은 목록에 반드시 존재함이 보장돼요.

encoding system ?encoding?

시스템 인코딩을 encoding으로 설정해요. 생략하면 현재 시스템 인코딩을 반환해요. 시스템 인코딩은 Tcl이 문자열을 시스템 호출에 넘길 때마다 사용돼요.

예제

일본어 euc-jp 인코딩의 바이트 시퀀스를 Tcl 문자열로 변환하는 예제예요:

set s [encoding convertfrom euc-jp "\xA4\xCF"]

결과는 유니코드 코드포인트 "\u306F"인데, 이것은 히라가나 글자 HA예요.

더 알아보기

  • Tcl_GetEncoding, fconfigure
  • 키워드: encoding, unicode