Сообщение об исключении из JVM неправильно печатается в консоли при использовании Java 9 и японской локали (возможно, из-за компактных строк) - PullRequest
0 голосов
/ 02 июля 2019

Учитывая следующую среду:

  • Windows 10
  • Язык установлен на японский
  • Язык для программ, не поддерживающих Юникод, установлен на японский
  • Java-программа запускается на консоли

После выполнения возникает исключение IOException, и сообщение, ожидаемое в консоли, выглядит следующим образом: 既存 の 接 続 続 は 的 的 的 的 的 的 的 的 し し し し。 (Переводится как «Существующее соединение было принудительно закрыто удаленным хостом»). См. Фрагмент кода ниже:

private void onIOException(IOException e, AbstractConnection connection)
{
    String reason = e.getMessage();
    ...
    log.error("Closing ",connection," because ",reason);
}

При работе в Java 8 сообщение печатается правильно.Однако при запуске в Java 9 сообщение печатается как as 「蟄 倥? ョ 謗 ・ 邯 壹? ッ 繝 ェ 繝「 繝 繝 繝?繝 帙 せ 繝 医 ↓ 蠑 キ 蛻 カ 逧? 縺 ォ 蛻? 譁 ュ 縺 輔 л 縺 セ 縺 励 ◆ 縲?

После некоторого исследования, было установлено, что в Java 9, байтовый массив, используемый для представления того жеСтрока содержит другой набор значений ([-24, -83, -116, -17, -67, ...]).В Java 8 строка раньше представлялась в байтах как ([-26, -105, -94, -27, -83, ...]).В Java 9, если мы создаем строку с использованием байтового массива, используемого в Java 8, сообщение печатается правильно.По-видимому, это также вызвано компактными строками, поскольку строки больше не хранятся в виде массивов символов.

Мы попробовали следующее:

  • с использованием системного свойства java.locale.providers
  • с использованием системного свойства file.encoding
  • с использованием консольной команды chcp с различными значениями
  • отключение компактных строк с помощью "-XX: -CompactStrings"

Мы также пробовали комбинации, но безрезультатно.

Это связано с предыдущим вопросом Сообщение IOException не печатается правильно при использовании Java 9 в Windows 10 с установленным языком и языком Японии также (я не могу добавить детали через комментарий или ответ).

У кого-нибудь есть идеи по этому вопросу?Спасибо!

...