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);
Интернационализация в Java (NetBeans): Как отображать (на кнопках, ...) текст, взятый из utf8-текстового файла, чтобы он отображался правильно и независимо от локали WindosXP?
Пишу программу, которая берёт задания из текстового файла (кодировка utf-8), выбирает в случайном порядке и производит опрос учащегося ... Кокретное описание (на мой взгляд) неважно. Главное - программа берёт неанглийский текст из файла и отображает его на графические элементы (использую Swing).
Проблема:
(1) При отладке программы в среде NetBeans всё прекрасно (текст отображается правильно и независимо от системной локали).
(2) После компиляции, получаемый jar-файл отображает utf8-текст неправильно вне зависимости от системной локали.
(3) Если в случае (2) utf8 - файл перекодировать в ANSI в соответствующей локали , то при установке этой локали в WindowsXP, текст отображается правильно (использован тот-же jar-файл - без перекомпиляции).
Не могли бы Вы подсказать способ решения этой проблемы.
Я использовал 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”:
Код:
Может быть я такой тупой, но это уже третий подход к решению подобной проблемы – логика стандартной библиотеки Java довольно специфическая.