@mao_z

Что происходит с кодировкой при конкатенации строк Java?

Вывожу в консоль так: System.out.println("Распознано: " + utterance);
В переменной utterance содержится текст из файла в кодировке UTF8.
В консоли получаю следующее: Распознано: С?РёС?С?С?
В дебагере в переменной содержится нормальный текст. Перепробовал разные способы. Ну например так: System.setOut(new PrintStream(System.out, true, "cp866"));
Пробовал: -Dfile.encoding=utf-8
При всех способах либо первая половина отображается неверно либо вторая. Как же так получается, что одна половина строки в одной кодировке, а другая - в другой. Кто-нибудь может объяснить суть проблемы?
  • Вопрос задан
  • 421 просмотр
Пригласить эксперта
Ответы на вопрос 3
titov_andrei
@titov_andrei
All my life I learn - and die a fool!
В консоли (cmd.exe) перед вызовом компилятора переключите кодовую страницу командой

chcp 1251

Достаточно сделать это один раз при каждом запуске консоли. javac в русскоязычной Windows выводит сообщения в кодировке cp1251, а консоль использует cp866.
Ответ написан
angrySCV
@angrySCV
machine learning, programming, startuping
лучше сразу отказаться от использования windows и их консоли в частности, раз и навсегда, если конечно вы не хотите познать этот прекрасный мир виндовс костылирования.
Ответ написан
Комментировать
@odissey_nemo
Программист, ГИС-системы, растры, космоснимки
Возможно, ваш исходник на диске в кодировке Windows-1251. Сохраните его как UTF-8 (без BOM, скорее всего)). Если так и было, то, по кр. мере, теперь вся выводная строка будет в единой кодировке. И должна выводиться или искажаться равномерно)))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы