2012-07-04 3 views
1

내 문제는 매우 간단하다 :InputStreamReader 인코더

new InputStreamReader(is, "UTF-8"); 

물음표 모양 · β을하고.

해당 문자를 올바르게 표시하려면 어떤 인코더를 사용해야합니까?

답변

3

취지 : The Java 5.0 Charset documentation.

Charset  Description 
US-ASCII Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set 
ISO-8859-1 ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1 
UTF-8  Eight-bit UCS Transformation Format 
UTF-16BE Sixteen-bit UCS Transformation Format, big-endian byte order 
UTF-16LE Sixteen-bit UCS Transformation Format, little-endian byte order 
UTF-16  Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark 

원하는 인코딩을 얻을 때까지 두 번째 매개 변수에서 모든 문자열을 시도하십시오.

+1

결국 ISO-8859-15입니다. 대단히 감사합니다! – razielsarafan

5

당신은 당신의 입력 데이터가 정말로에서입니다 인코딩 중 사용해야합니다. 당신이 그 문자를 표현하기위한 것입니다바이트를 제공하는 경우, 우리가 제안 할 수 있지만 우리는 당신이 그것에 대해 말할 수 없어요 몇 가지 가능성.

일부 추론을 사용하여 인코딩을 추측 할 수도 있지만 은 데이터의 출처를 기반으로 알고 있어야합니다. 이 경우 귀하의 의견이 무엇인지 전혀 알려주지 않았습니다. 웹 응답 일 경우 응답의 Content-Type 헤더를 확인해야합니다. 파일에서 가져온 것이라면 그 파일을 생성 한 대상에 따라 달라집니다.

편집 : 이제 웹 응답이므로 머리글 다이빙을 할 필요가 없습니다. 데이터를 다운로드하고 문자열 자체로 디코딩하는 HTTP 클라이언트 라이브러리를 사용할 수 있습니다.

+0

글쎄, 데이터는 인터넷의 wiki 페이지에서 나오므로 실제로 어떤 인코딩을 사용하는지 알지 못합니다. – razielsarafan

+2

@ santirivera92 : 내 답변에 따라 Content-Type 헤더를 살펴보십시오. 아니면 당신을 위해 이것을 수행하는 HTTP 클라이언트 라이브러리를 사용하십시오 ... –

+0

@ santirivera92 :'URLConnection'을 사용한다면'URLConnection.getHeaderFieldKey ("Content-type")'과'URLConnection.getHeaderField ("Content-type")' –

0

다른 사람들이 말하는 최종 결과가 Java에있는 동안 UTF-8이 될 것이라고 말하면서 추가 한 것은 사용자가 가진 모든 문자를 처리 할 수있게 될 것입니다. 그러나 여기서 질문은 으로 읽는 것입니다. 그리고 파일이 작성된 인코딩이 UTF-8이 아닌지에 따라 달라집니다.