여기 내 문제가 있습니다. 바이트 배열로 변환 한 InputStream이 있지만 런타임에 InputStream의 문자 집합을 알 수 없습니다. 필자의 원래 생각은 UTF-8로 모든 것을 처리하는 것이지만 ISO-8859-1로 인코딩 된 스트림에 이상한 문제가 발생하고 외래 문자가 있습니다. (그 미친 스웨덴)스칼라 - ISO-8859-1에서 UTF-8로 변환하면 외래 문자가 이상합니다
가 여기에 문제의 코드입니다 :
IOUtils.toString(inputstream, "utf-8")
// Fails on iso8859-1 foreign characters
이 시뮬레이션은, 내가 가진 : 나는 무엇을
new String("\u00F6")
// Returns ö as expected, since the default encoding is UTF-8
new String("\u00F6".getBytes("utf-8"), "utf-8")
// Also returns ö as expected.
new String("\u00F6".getBytes("iso-8859-1"), "utf-8")
// Returns \uffff, the unknown character
를 놓친 거지?
'InputStream' 내에 인코딩 된 (표면 문자) 문자의 인코딩을 모른다면 문자로 변환 할 수 없습니다. 그것은 아주 간단합니다. 그리고 ... 왜 ISO-8859-1로 인코딩 한 다음 UTF-8에서 디코딩하면 임의의 문자로 작동 할 것이라고 기대하십니까? –
Nit :'new String ("\ u00F6")'값을 예상대로 가지고 있으면 인코딩 할 때 * nothing *이됩니다 .. –
런타임시 인코딩을 결정하는 것이'Content-Type' 헤더와 각각의'charset' 매개 변수입니다 exist –