2015-02-17 1 views
0

Привет, У меня возникли некоторые проблемы с этой простой задачей преобразования. Вот мой код ниже (грубый, но не настолько сложна):Преобразование файла Windows-1252 в файл UTF-8

 FileInputStream fis = new FileInputStream ("file"); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"CP1250")); 

    try { 

     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     try { 
      line = reader.readLine(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     while (line != null) { 
      sb.append(line); 
      if(line.contains(" ")) 
      sb.append(System.lineSeparator()); 
      try { 
       line = reader.readLine(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
     String everything = sb.toString(); 
     System.out.println(everything); 

     PrintWriter writer = null; 
     try { 
      writer = new PrintWriter("clean", "UTF-8"); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     writer.println(everything); 
     writer.close(); 
    } 

    finally { 
     try { 
      reader.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

Но я получаю тот же результат, что и вход с тем же форматом кодирования. Вы все равно можете помочь?

+0

Какое содержание вы использовали для своего входного файла? – SubOptimal

+0

https://drive.google.com/file/d/0B0taHI3cBBzVUDExcXNRU25halU/view?usp=sharing – Xorsist

+0

Вы написали Windows-1252 в названии, но CP1250 в коде. Который из них? –

ответ

0

Документы говорят, что 1) public void println (String x) Распечатывает строку, а затем завершает линию. Этот метод ведет себя так, как будто он вызывает печать (String), а затем println().

И 2) общественный листок печати (строка s) Печатает строку. Если аргумент равен нулю, тогда печатается строка «null». В противном случае символы строки преобразуются в байты в соответствии с кодировкой символов по умолчанию для платформы, и эти байты записываются точно так же, как метод write (int).

Вы, вероятно, получите ваш преобразование сделано с

PrintWriter writer 
    = new PrintWriter(new OutputStreamWriter(new FileOutputStream("clean", true), 
     "UTF-8")); 

 Смежные вопросы

  • Нет связанных вопросов^_^