2009-12-21 4 views
3

모든 툴킷에 UTF-8을 사용하고 싶지만 Windows에서 사용되는 일부 도구는 CP1252 (Windows 전용 인 것 같습니다)을 사용하는 것 같습니다. 이렇게하면 호환되지 않는 출력이 생성되고 어떤 코드 포인트에서 출력됩니까? 그렇다면 그것에 대해 무엇을 할 수 있습니까?Windows에서 CP1252를 사용하지 않아도됩니까?

(이 인코딩에 대한 기본 교육에 감사 드리며 문제를 완전히 이해하지 못함).

답변

6

Windows의 코드 페이지 1252에 대해 하드 코딩하는 도구는 매우입니다. 훨씬 더 가능성이 귀하의 컴퓨터에 기본 코드 페이지가 발생합니다. 1252는 서유럽과 미주 지역에서 사용됩니다. 제어판, 국가 및 언어 옵션에서 구성됩니다. 그들은 다른 이름을 사용하고 있습니다. Win7에서는 관리 탭의 시스템 로케일 변경에 있습니다.

그렇습니다. 다른 도구를 선택해야하는 충분한 이유가없는 한 대부분의 도구는 기본 코드 페이지를 사용합니다. The BOM은 그처럼 좋은 이유입니다. 주목할만한 예로 메모장 (파일 + 열기 대화 상자에서 인코딩을 Ansi가 아닌 다른 것으로 변경하지 않는 한)과 C/C++ 컴파일러가 있습니다. 일반적으로 기본 코드 페이지를 사용하기 위해 수행해야 할 특별한 작업은 없습니다. BOM이 없을 때 텍스트 파일의 올바른 코드 페이지를 추측하는 것은 정확하게 수행하기가 불가능합니다. 매우 흥미 진진한 전쟁 이야기에 대한 Google의 "부시 대통령은 사실을 숨겼습니다."

+2

+1 감사합니다. 특히 IsTextUnicode 버그. –

5

CP1252 및 UTF-8은 모든 문자 < 128에서 동일합니다. 위의 내용과 다릅니다. 따라서 영어를 계속 사용하고 발음 구별 부호에서 벗어나면 같은 결과가됩니다.

대부분의 Windows 도구는 현재 사용자의 현재 코드 페이지로 설정된 것을 사용하며, 현재 코드 페이지는 미국 Windows의 경우 1252로 기본 설정됩니다. 다른 코드 페이지로 쉽게 변경할 수 있습니다. 그러나 UTF-8은 Windows 용으로 사용할 수있는 코드 페이지 옵션 중 하나가 아닙니다. (나는 그것이 있었 더라면 좋겠다고 생각한다).

+0

매우 명확하고 그에 실망! 불행히도 우리는 다른 사람들이 작성한 텍스트를 처리하므로 많은 코드 포인트를 처리해야합니다. –

2

Windows의 일부 유틸리티는 파일 시작 부분의 UTF-8 byte-order mark을 인식합니다. 불행히도 나는 그것을 시도하는 것 외에는 효과가 있는지 결정할 방법을 모른다.

+0

파일이 UTF임을 나타내는 표시로 UTF 바이트 순서 표시를 사용하는 것은 기술적으로 잘못되었지만이 작업을 보았습니다. –

5

여섯 살 여전히 관련 :

지금, 당신의 질문에 대해 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) : 네, 거기에 여전히 UTF-8 파일에 그 초크 도구가 있습니다. 그러나 점점 더 많은 도구들이 "그것을 얻고 있습니다". 자신 만의 것을 개발한다면, 모든 문자열이 유니 코드 인 Python 3을 조사하고 싶을 것입니다. 철학은 가능한 한 빨리 모든 입력을 유니 코드 (필요한 경우)로 변환하고 가능한 한 늦게 대상 인코딩으로 변환하는 것입니다. 특정 파일의 인코딩을 추측 할 수있는 툴킷이 있습니다 (예 : Mark Pilgrimchardet, 포트는 Mozilla's encoding detector). 인코딩을 지정하지 않은 파일을 사용하는 경우 좋습니다.

1

UTF-8은 현재 코드 페이지가 아닌 Windows에서 지원됩니다. UTF-8과의 변환에는 UTF-8을 사용할 수 있지만 현재 코드 페이지로 설정할 수는 없습니다.

처음에는 코드 페이지를 설정하여 시간을 낭비하지 마십시오.이 방법을 사용하면 Sisyphus 신화가 떠오르지 만 코드 페이지를 사용하여 문제를 해결할 수는 없습니다. 유니 코드를 사용해야합니다.

응용 프로그램을 유니 코드로 빌드하면 UTF-16을 사용하고 입력/출력 작업시 UTF-8로 변환 할 수 있습니다. 이것은 fopen이 UTF-8 읽기 또는 쓰기를 지원하므로 매우 간단합니다.

UTF-8 파일을 사용하는 다른 Windows 도구의 사용과 관련하여 도구가 ASCII로 작동 할 수있는 경우 UTF-8에서 작동 할 수 있으므로 인식하지 않아야합니다 (심지어 그렇다고해서 유니 코드 문자이지만 최소한 파일을로드하거나 파싱 할 수 있습니다.)

현재 귀하는 어떤 프로그래밍 언어를 사용하고 있으며 어떤 Windows 도구를 사용하고 계신지 잊었습니다. 더 국제화 물건에 대한 관심이 도자기 경우

또한, 방문하시기 바랍니다 내 blog.i18n.ro