Вы уже указываете "charset=utf-8"
для сгенерированного HTML, поэтому чтение/рендеринг данных не должно быть проблемой в браузере (как вы предлагаете).
Но пример кода вашей консоли неверен, поскольку в нем не указано, что следует использовать UTF-8. Поведением по умолчанию будет использование кодировки по умолчанию вашей платформы при создании данных, что, вероятно, не то, что вам нужно.
Самый простой способ исправить это в вашем примере кода — переназначить System.out
на PrintStream
, который использует UTF-8, вызвав setOut()
:
String text = "Muğla Sıtkı Koçman Üniversitesi";
System.out.println(text + " (default PrintStream)");
System.setOut(new PrintStream(System.out, true, "UTF8"));
System.out.println(text + " (UTF-8 PrintStream)");
Однако, если я запускаю этот код из командной строки Windows, я получаю такой беспорядок:
Mu?la S?tk? Koçman Üniversitesi (default PrintStream)
Muğla Sıtkı Koçman Üniversitesi (UTF-8 PrintStream)
Первая строка не работает (как и ваша), потому что данные записываются и читаются с использованием кодировки по умолчанию, которая на моей машине Cp437. И вторая строка не работает, потому что, хотя данные правильно записываются как UTF-8, они все еще отображаются с использованием Cp437.
Чтобы исправить это, явно установите кодовую страницу вашей консоли на UTF-8, указав chcp 65001
в консоли перед запуском вашего кода (по крайней мере, в Windows). Затем вы увидите, что вторая строка отображается правильно, потому что она и пишется, и читается как UTF-8:
Mu?la S?tk? Koman niversitesi (default PrintStream)
Muğla Sıtkı Koçman Üniversitesi (UTF-8 PrintStream)
Примечания:
- Вы не показываете, как сгенерированный HTML создается в вашем сервлете, но если вы убедитесь, что он написан как UTF-8, все будет в порядке.
- Если вы все еще застряли, обновите свой вопрос, чтобы показать полный источник вашего сервлета, и если он слишком велик, создайте минимальный, Воспроизводимый пример.
- Я думаю, что бесполезно, что Eclipse делает что-то за кулисами, чтобы выходные данные правильно отображались в консоли. Я не уверен, почему команда Eclipse решила это сделать, потому что это маскирует основную проблему в вашем коде.
person
skomisa
schedule
19.03.2021
html
наjava
. - person skomisa   schedule 19.03.2021