2011-12-27 52 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中? – 2011-12-27 13:05:05

+0

是的,它是在UTF-8。 – 2011-12-27 13:11:02

+0

然後sedat.txt中的編碼是什麼?我沒有看到編碼規範。 – 2011-12-27 13:14:16

回答

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

如果這是生產代碼,我會建議直接寫輸出到文件,而不是第一個字符串中積累它。而且,您可以通過將源讀取爲InputStream並寫入OutputStream(並跳過轉換爲字符)來避免任何潛在的編碼問題。

相關問題