2011-12-27 3 views
0

У меня есть клиент, который загружает файл vcf, и я получаю этот файл со стороны сервера и читаю его содержимое и сохраняет их в txt-файле. Но есть ошибка персонажа, когда я пытаюсь его прочитать, если есть турецкие символы, это похоже на «?». Мой код чтения здесь:Характер выглядит как "?" при чтении содержимого загруженного файла

  FileItemStream item = null; 
      ServletFileUpload upload = new ServletFileUpload(); 
      FileItemIterator iterator = upload.getItemIterator(request); 
      String encoding = null; 
      while (iterator.hasNext()) { 
       item = iterator.next(); 
       if ("fileUpload".equals(item.getFieldName())) { 
        InputStreamReader isr = new InputStreamReader(item.openStream(), "UTF-8"); 
        String str = ""; 
        String temp=""; 
        BufferedReader br = new BufferedReader(isr); 
        while((temp=br.readLine()) != null){ 
         str +=temp; 
        } 
        br.close(); 
        File f = new File("C:/sedat.txt"); 
        BufferedWriter buf = new BufferedWriter(new FileWriter(f)); 
        buf.write(str); 
        buf.close(); 
      } 
+0

Действительно ли ваш файл ввода в UTF-8? –

+0

Да, это в UTF-8. –

+0

Что такое кодировка в sedat.txt? Я не вижу спецификации кодирования. –

ответ

1
BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8")); 

Если это производство код, я бы рекомендовал писать вывод прямо в файл, а не накапливать его в строке первой. И вы могли бы избежать любых возможных проблем с кодированием, читая источник как InputStream и записывая как OutputStream (и пропуская преобразование в символы).