2013-08-27 5 views
1

java native2ascii 도구에 대해 약간 혼란스러워합니다. tool in Java 6에 대한 정의 :Java native2ascii 도구에 대한 혼동

는 기본 인코딩 된 문자를 유니 코드로 인코딩 문자 하나 ( 비 라틴 1 및 비 유니 코드 문자가)으로 파일을 변환합니다.

그럼 왜 라틴어 1 테이블 (é)에 속하는 문자를 유니 코드 인코딩 된 표현 (\ u00e9)으로 변환합니까 ???

라틴어 1 (ISO 8859-1) 표는 내가 직접 프랑스어와 같은 일부 유럽 언어의 속성 파일을 작업 할 수 있음을 의미한다 예를 http://en.wikipedia.org/wiki/ISO/IEC_8859-1#Codepage_layout

여기를 사용할 수 있습니다.

내 질문을 명확히하기 :

에 native2ascii는 (그 설명에 따라) 라틴 문자를 변환 야해. é는 유효한 latin1 문자입니다. 그렇다면 왜 변환 되었습니까?

답변

0

당신은 속성으로 작업 할 수는 프랑스어와 다른 문자와 파일. 속성에는 \uxxxx 시퀀스를 사용할 수 있습니다. Properties에는로드 (판독기 판독기) 메소드가 있으므로 국가 별 문자로 직접 작업 할 수 있습니다. 그런 다음 파일이 어떤 인코딩 할 수 있습니다, 당신은 파일을 올바르게 디코딩 독자를 제공 할 것입니다 예를 들어 new InputStreamReader(new FileInputStream(1.properities), Charset.forName("ISO-8859-1"));

나는 또한 법적 라틴어-1 문자이기 때문에에 native2ascii가 é을 변환하지 말아야 및 문서는 라틴어-1 문자를 말한다 동의 변환되지 않습니다.

+0

예, 그렇지만 독자를 제공 할 수는 없으므로 기본값을 사용해야합니다. 즉, 파일에 é를 직접 입력 할 수 없습니다. 제품을 생성하는 동안 \ uxxxx를 넣고 인스턴스 maven을 사용하여 native2ascii를 사용해야합니다. – Kemoda

+0

내 질문이 더 있습니다. 도구 설명에 기반하여 native2ascii가 latin1 문자를 변환하지 않아야하는 이유는 무엇입니까? 설명서에 오류가 있습니까? – Kemoda

+0

나는 또한 문서가 잘못되었다고 생각하고 비 ASCII 문자를 말해야한다고 생각하지만 Properties.load (InputStream)는 ISO88591이라는 가정하에 실제로 파일을 읽습니다. 따라서 ISO88591 소품 파일을 읽는 것으로 가정합니다. \ uxxxx없이 OK –

0

혼란의 출처는 해당 문서는 Java 버전으로 변경하는 것이 수 있습니다 7. 자바 6 솔라리스와 유닉스 (http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/native2ascii.html을)에 대한 문서에서

는 말한다 : "자바 컴파일러와 다른 자바 툴 할 수있는 파일 만 처리하는 포함 라틴어-1 및/또는 유니 코드로 인코딩 (\ udddd 표기) 문자.에 native2ascii 라틴-1 및/또는 유니 코드로 인코딩 부르는 것들은 포함 된 파일에 다른 문자 인코딩 가 포함 된 파일을 변환합니다.는 "

내가 분명히 생각 출력이 Latin-1이고 Latin-1이 아닌 문자가 출력에서 ​​유니 코드로 인코딩된다는 것을 의미합니다.

나는 우분투에 오픈 JDK 6을 확인하고이이 문서에 적합하지 않습니다에 native2ascii, 그것은 유니 코드 인코딩으로 라틴 1 문자를 출력합니다. 따라서 문서 또는 native2ascii 도구는이 경우에 잘못된 것으로 간주 될 수 있습니다.

그러나 자바 7 및 Java 8 문서 ( http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/native2ascii.html https://docs.oracle.com/javase/8/docs/technotes/tools/unix/native2ascii.html)에서 말한다 : "에 native2ascii 유니 코드 이스케이프 사용하여 ASCII로 인코딩 된 파일에 자바 런타임 환경 에서 지원하는 모든 문자 인코딩으로 인코딩 된 파일을 변환 (" \ uxxxx "표기법)"

우분투에서 Openjdk 8 native2ascii를 확인한 결과 적절하게 작동하는 것으로 확인되면 Latin-1 문자가 유니 코드로 변환됩니다.

7/8 설명서에는 "이 프로세스는 ISO-8859-1 문자 세트가 아닌 문자가 들어있는 속성 파일에 필요합니다."라는 내용이 있습니다.

라틴어 -1 (ISO-8859-1) 인코딩 된 문자가 포함 된 속성 파일이 여전히 유효 함을 분명히 의미한다고 생각합니다.