2011-03-30 3 views

답변

0

같은 문자열이 여러 인코딩에서 유효 할 수 있으므로 일부 추가 정보없이 일반적인 경우이 문제를 해결할 수 없습니다. 예를 들어, 16 진수 값 48 45 4C 4C D4는 iso-8859-1에서 "HELLÔ"과 KOI8-R 인코딩에서 "HELLт"과 동일합니다. 당신이 사전 검사 (흠 ... 불가 리아 어처럼 보입니다)를하는 것처럼 발견법에 들어가기 시작하지 않는 한, 8 비트 인코딩 중 어느 것도 거의 구별 할 수 없을 것입니다.

하나의 전략은 utf-8을 먼저 시도한 다음 입력이 utf-8로 디코딩하지 못하면 지정된 8 비트 인코딩 (예 : iso-8859-1)으로 되돌아 가도록하는 것입니다. (utf-8을 사용하면 바이트 시퀀스가 ​​유효하지 않으므로 utf-8로 디코딩하려고하면 임의의 8 비트 인코딩의 문자열이 오류를 던질 가능성이 큽니다.

0

NSString 클래스는 +stringWithContentsOfFile:usedEncoding:error으로 인코딩 검색을 제공하지만 파일이나 URL에서로드하는 경우에만 사용할 수있는 것 같습니다. 내가 얼마나 많은 인코딩을 시도했는지, 얼마나 정확한지는 잘 모르겠습니다.

+0

이 방법은 자동 문자 감지를 제공하지 않습니다. 올바른 인코딩을 제공해야합니다. – user403015

+0

@ user403015 : 문서를 다시 읽으면 "이 방법은 경로에있는 파일의 인코딩을 확인하려고 시도합니다.". 당신은'stringWithContentsofFile : encoding : error'를 보았고'stringWithContentsOfFile :'**'used' **'Encoding : error'가 아니 었습니다. – dreamlax

관련 문제