Я проверяю совместимость i18n моего приложения.
У меня есть английская версия Windows 7, что означает, что язык системы отображается на английском языке. И я установил системный языковой стандарт как китайский для приложений, не поддерживающих Юникод.
Мое приложение столкнулось с проблемами при экспорте файлов HTML с китайскими иероглифами под jdk1.6, но отлично работает при работе под jdk1.7.
Я отладил его и обнаружил, что прямая причина в том, что Charset.defaultCharset()
вернул разные значения.
Под jdk1.7 Charset.defaultCharset()
возвращено GBK
, которое является кодировкой для китайского языка.
Под jdk1.6 Charset.defaultCharset()
возвращается window_1252
, что является кодировкой для латинского языка.
Я знаю, что проблему можно решить, назначив кодировку, скажем, utf-8
, в коде.
Но я хочу знать, почему Charset.defaultCharset()
возвращает разные значения в JDK1.7 и JDK 1.6.