2013-05-22 3 views
0

У меня есть Java-программа, которую я разрабатываю с Netbeans. Я изменил настройки на Netbeans, чтобы он понял UTF-8.Как изменить текстовое кодирование моей Java-программы?

Но если я уберу и создаю свою Программу и использую ее в своей системе Windows, изменения в текстовом кодировании и буквы типа «ü», «ä» и «ö» больше не отображаются и не используются.

Как я могу связаться с моей ОС и сказать ему использовать UTF-8?

Или есть ли какое-либо хорошее обходное решение?

EDIT: Sry для beeing так неспецифичен. Ну, в первую очередь: я использую Docx4j и Apache POI с методами getText(), чтобы получить некоторые тексты из doc, docx и pdf и сохранить их в String.

Затем я пытаюсь сопоставить ключевые слова в тех текстах, которые я читал из TXT-файла.

Эти ключевые слова отображаются в Combobox в исполняемом Java-файле. Я вижу проблемы с кодировкой. Он не будет соответствовать ни одному из ключевых слов, используя слова, описанные выше.

В моей IDE работает нормально. Я пытаюсь опубликовать код здесь, после того как я его перепроектирую.

TXT-файл находится в UTF-8. Если я преобразую его в ANSI, я вижу те же проблемы, что и в Jar. чтение из него:

if(inputfile.exists() && inputfile.canRead()) 
      { 
       try { 

        FileReader reader = new FileReader(inputfilepath); 
        BufferedReader in = new BufferedReader(reader); 
        String zeile = null; 

        while ((zeile = in.readLine()) != null) { 

         while(zeile.startsWith("#")) 
         { 
          if (zeile.startsWith(KUERZELTITEL)) { 
           int cut = zeile.indexOf('='); 

           zeile = zeile.substring(cut, zeile.length()); 
           eingeleseneTagzeilen.put(KUERZELTITEL, zeile.substring(1)); 
           kuerzel = zeile.substring(1); 
          } 

...

это сделал для меня:

     File readfile = new File(inputfilepath); 
        BufferedReader in = new BufferedReader(
          new InputStreamReader(
          new FileInputStream(readfile), "UTF8")); 

Thx!

+0

Это очень неясно. Покажите нам код, который вы выполняете, сообщите нам, где печатаются символы (консоль, webapp, приложение Swing?) –

+0

Java использует unicode в любом случае, зачем менять его на UTF-8? Где и что именно отображается неправильно? – Fildor

+0

Будьте более конкретным. Java обрабатывает все строки как Unicode внутри. Вы пытаетесь читать из файла/stdin? Вы пытаетесь написать файл/stdout? – gkalpak

ответ

1

Поздравляю, я также использую UTF-8 для своих проектов, что кажется лучшим.

Просто убедитесь, что редактор и компилятор используют одну и ту же кодировку. Это гарантирует, что строковые литералы в java правильно закодированы в jar, .class-файлах.

В NetBeans 7.3 теперь есть одна настройка (я использую сборки maven).

Файлы свойств исторически в ISO-8859-1 или закодированы как \uXXXX. Поэтому вам нужно позаботиться.

Внутренне Java использует Unicode, поэтому других проблем не возникнет.

FileReader reader = new FileReader(inputfilepath); 

должен быть

BufferedReader reader = new BufferedReader(new InputStreamReader(
    new FileInputStream(inputfilepath), "UTF-8"))); 

Та же процедура (явный дополнительный параметр кодирования) для FileWriter (OutputStreamWriter + кодирования), String.getBytes (кодирование), новая строка (байт, кодирование).

+0

совершенным. Спасибо. Я использовал ту же Codeline, перед тем, как прочитать ваш пост. Я изменил Inputencoding, и он отлично работал в runnable jar. – user2410206

0

Попробуйте передать -Dfile.encoding = utf-8 как аргумент JVM.

+0

как я могу это сделать? Можете ли вы дать мне пример PLS? – user2410206

+0

Я действительно написал это перед вашим редактированием ... если вы читаете из текстового файла, сами файлы должны быть закодированы в utf-8. в то время как чтение из файлов передает UTF8 на InputStreamReader –

+0

, так как для вашего вопроса было бы –