2012-04-16 2 views
1

파일이 Windows-1256인지 여부를 확인하고 싶습니다. 텍스트 파일이 Java에서 Windows-1256인지 인식 할 수있는 방법이 있습니까?Windows-1256을 사용하여 텍스트 파일이 인코딩 된 경우 어떻게 감지합니까?

http://jchardet.sourceforge.net/

을 그리고이 질문에 봐 :

+3

만하지 않은 인코딩에의 텍스트 검색 할 수 있습니다에 대한 해석 할 예외를 슬로우 지정된 인코딩에서 유효합니다. 예 : 일반 ASCII 텍스트 블록은 원래 여러 개의 인코딩이 될 수 있습니다 (어느 것이 었는지는 중요하지 않음). –

답변

0

파일로 인코딩 헤더를 추가합니다. 많은 텍스트 편집기는이 작업을 수행 :보다

# -*- coding: cp1256 -*- 

기타,이 작업을 수행 할 신뢰할 수있는 방법이 없습니다.

문제는 cp12xx 인코딩이 서로 크게 다르지 않다는 것입니다. 그들은 화면에서과 다르게 보이지만 파일의 데이터에는 0x8a은 아랍어 ٹ (1256) 또는 Š (1250과 1252) 또는 아무것도 (1255)를 의미하는 것이 없습니다.

추 신 : 오른쪽에서 왼쪽 문제 때문에 마지막 문장이 잘못되었습니다. "(1256)"코드는 실제로 아랍 문자 뒤에 있습니다.

0

Windows-1256 (아랍어), UTF-8 및 Windows-1252 (서유럽의 일부) 중에서 선택할 수 있다고 가정 해보십시오. 그런 다음 UTF-8 (unsensible sequence) 및 Windows-1252에 대해 잘못된 인코딩 증명을 등록 할 수 있습니다. 윈도우 1252의 일부 시퀀스가 ​​아닌 바이트 UTF-8 보통 어쨌든 -

try { 
    readInUTF8(file); 
} catch (IsWindows1256Exception e { 
    readInWindow1256(file); 
} 

(의사 코드)

관련 문제