Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Интернационализация в Java (NetBeans): Как отображать (на кнопках, ...) текст, взятый из utf8-текстового файла, чтобы он отображался правильно и независимо от локали WindosXP?

11K
03 июня 2012 года
Огненный
15 / / 01.11.2005
Краткое описание проблемы:

Пишу программу, которая берёт задания из текстового файла (кодировка utf-8), выбирает в случайном порядке и производит опрос учащегося ... Кокретное описание (на мой взгляд) неважно. Главное - программа берёт неанглийский текст из файла и отображает его на графические элементы (использую Swing).

Проблема:
(1) При отладке программы в среде NetBeans всё прекрасно (текст отображается правильно и независимо от системной локали).
(2) После компиляции, получаемый jar-файл отображает utf8-текст неправильно вне зависимости от системной локали.
(3) Если в случае (2) utf8 - файл перекодировать в ANSI в соответствующей локали , то при установке этой локали в WindowsXP, текст отображается правильно (использован тот-же jar-файл - без перекомпиляции).

Не могли бы Вы подсказать способ решения этой проблемы.
11K
17 июня 2012 года
Огненный
15 / / 01.11.2005
Вроде как проблема решена...

Я использовал java.io.FileReader , а в его описании сказано :
Convenience class for reading character files. The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate. To specify these values yourself, construct an InputStreamReader on a FileInputStream.”

После того, как я воспользовался этой рекомендацией, у меня появилась возможность явно указать кодировку “UTF-8”:

 
Код:
File text_file = new File(inner_f, file_name);

InputStreamReader text_file_reader = null;

FileInputStream text_file_stream = new FileInputStream(text_file);
text_file_reader = new InputStreamReader(text_file_stream, "UTF-8");

LineNumberReader ln_reader = new LineNumberReader(text_file_reader);
P.S.

Может быть я такой тупой, но это уже третий подход к решению подобной проблемы – логика стандартной библиотеки Java довольно специфическая.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог