2010-04-06 8 views
1

I가 다음과 같은 구조화 UTF8 파일과 다음 문제 :자바 구문 분석 UTF8

FIELD1§FIELD2§FIELD3§FIELD4

그것을 성문화 A7을 사용하는 파일의 16 진수 값을 보면 §. 따라서이 코드 목록에 따르면 UTF8이어야하지만 A7>7F이므로 1 바이트가 §을 코드화하는 데 충분하지 않아야 이상합니다.

그래서 나는 지정된 캐릭터 세트와 직접 BufferedReader를 사용하여 시도 :

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(input), utf8)) 

하지만

SmartTokenizer st = new SmartTokenizer(toTokenize, "§") 

합니다 (SmartTokenizer으로 문자열을 토큰 화하려고 할 때 StringTokenizer의 수정 된 버전을하다 빈 토큰을 유지함)

분리가 발생하지 않으며 문자열을 인쇄하려고 시도하면

FIELD1? FIELD2? FIELD3? ...

그래서 파일에 사용 §은 구분 기호로 지정된 것과 다른, 그리고 너무 그것을 밖으로 인쇄 할 수 없습니다.

그래서 여기에 무슨 문제가 있습니까? 원래 파일은 §을 저장하기 위해 2 바이트를 사용해야합니까?

답변

6

§의 인코딩은 0xC2 0xA7입니다.

파일에 을 사용하여 §을 나타내는 경우 ISO-8859-1 (또는 다른 ISO-8859- * 또는 그 파생어)에 기록되어있을 수 있습니다.

+0

예, 저는 표준 사이를 변환하려고 시도한 후에 잘못된 방향을 조사하고있었습니다. 단지 BufferedReader에게 ISO-8859-1 charset에 따라 읽도록 지시했습니다. 감사합니다! – Jack