Вот моя проблема; У меня есть InputStream, который я преобразовал в массив байтов, но я не знаю набор символов InputStream во время выполнения. Первоначально я думал делать все в UTF-8, но я вижу странные проблемы с потоками, которые закодированы как ISO-8859-1 и имеют иностранные символы. (Эти сумасшедшие шведы)
Вот код, о котором идет речь:
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 будет работать для произвольных символов? - person Randall Schulz   schedule 06.02.2013new String("\u00F6")
, имеющее ожидаемое значение, не имеет ничего общего с кодировкой.. - person   schedule 06.02.2013Content-Type
заголовков и соответствующих имcharset
параметров. - person Kristian Domagala   schedule 06.02.2013"utf-8"
(вnew String("\u00F6".getBytes("iso-8859-1"), "utf-8")
) вызывает проблему - вызовSystem.out.println(new String("\u00F6".getBytes("iso-8859-1")));
очень хорошо напечатал быö
- person Mr_and_Mrs_D   schedule 11.04.2013