2010-01-20 2 views

답변

3

인코딩에 대해서는 잘 모르지만 여러 다른 라인 종료 표준을 지원할 수 있는지 확인하십시오! 아직 미시간 카플란의 블로그를 체크 아웃하지 않은 경우 (\ r에 \ n을 대 \ n을)

, 나는 이렇게 제안 : http://blogs.msdn.com/michkap/

는 특히이 문서가 유용 할 수 있습니다 : 확실히 http://www.siao2.com/2007/04/22/2239345.aspx

+0

두 가지 모두 지원하므로 걱정하지 않아도됩니다. –

+0

유니 코드 라인 구분자 U + 2028도 있지만 야생에서 본 적이 없습니다. – xan

1

인코딩을 검색하는 방법은 없습니다. 당신이 할 수있는 최선의 일은 IE와 같은 것으로 다른 언어의 문자 배포판과 언어의 표준 문자에 의존합니다. 그러나 그것은 최고로 긴 샷이다.

커다란 문자 집합 라이브러리 (iconv와 같은 프로젝트 체크 아웃)를 사용하고 사용자가 사용할 수있는 모든 라이브러리를 준비하는 것이 좋습니다. 그러나 자동 감지를 신경 쓰지 마십시오. 기본적으로 사용자가 기본 문자 집합의 기본 설정을 선택하도록 허용하기 만하면됩니다. 기본 문자 집합 자체는 기본적으로 UTF-8입니다.

+0

글쎄, 할 수있어,하지만 외부 라이브러리가 옵션이라고 생각하지 않습니다. –

+0

외부 라이브러리 아니요. 문자 인코딩 테이블. 유니 코드와 다른 문자 집합 간의 매핑. 외부 라이브러리를 사용하면 쉽게 변환 할 수 있습니다. 나는이 텍스트 에디터를 직접 쓰고 있다고 올바르게 이해하고있다. –

+0

예, 직접 작성하고 있습니다. –

0

무엇을 하든지 스니프 테스트에 256 바이트 이상을 사용하십시오. 올바르게 처리하는 것이 중요하므로 전체 문서를 확인하지 않으시겠습니까? 또는 최소한 첫 번째 100KB 정도.

UTF-8과 명백한 UTF-16 (0 바이트가 교대로 많이 있음)을 시도한 다음 현재 로케일의 ANSI 코드 페이지로 되돌아갑니다.

+0

포인트가 찍혔습니다. 그러나 5MB가 넘을 때 전체 파일을 검사하는 것은 어리 석고 무의미합니다. –

+1

내가 생각하는 것은 UTF-16과 UTF-8 만 지원하는 것입니다. 표준 ASCII 문자는 ASCII 및 UTF-8에서 동일하며 다른 128 문자는 무시 될 수 있습니다. –

1

Latin-1 (ISO-8859-1) 및 해당 Windows 확장 CP-1252는 반드시 서양 사용자에게 지원되어야합니다. UTF-8이 더 나은 선택이라고 주장 할 수도 있지만, 사람들은 종종 그런 선택을하지 않습니다. 중국 사용자는 GB-18030을 요구할 것이며, 일본어, 러시아어, 그리스 사람도 모두 UTF-8로 인코딩 된 유니 코드 옆에 자신의 인코딩을 가지고 있다는 것을 기억하십시오.

탐지의 경우 대부분의 인코딩이 안전하게 감지되지 않습니다. Latin-1과 같은 일부에서는 특정 바이트 값이 유효하지 않습니다. UTF-8에서는 모든 바이트 값이 발생할 수 있지만 모든 바이트 값 순서는 발생할 수 없습니다. 그러나 실제로는 디코딩 자체를하지는 않지만 인코딩/디코딩 라이브러리를 사용하여 디코딩하고 오류를 잡으십시오. 그렇다면이 라이브러리가 지원하는 모든 인코딩을 지원하지 않는 이유는 무엇입니까?

특정 인코딩에 대한 디코딩과 같은 추론을 개발 한 다음 이상한 문자 또는 문자 조합 또는 빈도에 대한 결과를 테스트 할 수도 있습니다. 그러나 이것은 결코 안전하지 않을 것이며, 나는 Vilx와 동의합니다. 귀찮게해서는 안됩니다. 내 경험상 사람들은 일반적으로 파일에 특정 인코딩이 있거나 2 ~ 3 개만 가능하다는 것을 알고 있습니다. 따라서 그들이 잘못된 것을 선택했다면 쉽게 적응할 수 있습니다. 다른 편집자를 살펴보십시오. 가장 똑똑한 해결책이 항상 최고는 아니며 특히 사람들이 다른 프로그램에 익숙하다면 더욱 그렇습니다.

+0

내가 실수하지 않는다면 UTF-16과 UTF-8을 지원하는 wxWidgets를 사용하고 있습니다. –

+0

설명서를 읽었으며 wxWidgets는 UTF-32와 같은 몇 가지 다른 기능을 지원합니다. 아주 흔한 일이 아닙니다. 당신을 생각하십시오. –

1

UTF-16은 일반 텍스트 파일에서 매우 일반적이지 않습니다. UTF-8은 ASCII와 다시 호환되며 XML과 같은 표준에서 지정되므로 훨씬 더 일반적입니다.

1) 다양한 유니 코드 인코딩의 BOM을 확인하십시오. 발견되면 해당 인코딩을 사용하십시오.
2) BOM이없는 경우 파일 텍스트가 유효한 UTF-8인지 확인하십시오. ASCII가 아닌 샘플에 도달 할 때까지 읽어야합니다 (많은 파일이 거의 모든 ASCII이지만 악센트 부호가 있거나 큰 따옴표가있을 수 있기 때문) 또는 파일 끝. 유효한 UTF-8 인 경우 UTF-8을 사용하십시오.
3) 유니 코드가 아닌 경우 현재 플랫폼의 기본 코드 페이지 일 수 있습니다.
4) 일부 인코딩은 감지하기 쉽습니다. 예를 들어 일본어 Shift-JIS는 히라가나 및 가타카나를 나타내는 0x82 및 0x83이라는 접두사 바이트를 많이 사용합니다.
5) 프로그램의 추측이 잘못되었을 때 인코딩을 변경하는 사용자 옵션을 제공하십시오.

관련 문제