2013-05-10 127 views
-1

我正在尝试编码并保存在Cp1252编码中的字符串,并将其显示在java文本区域中。当我读回来时,它带有问号的黑色钻石,通常是特殊字符(',&等)。我应该如何格式化以显示正确的字符。Java编码错误

我无法复制和粘贴文本,因为它在移出单词时几乎可以正确显示。但我用来读取Cp1252文件的代码如下:

try { 
     br = new BufferedReader(new FileReader(f)); 
     //Read File Line By Line 
     while ((strLine = br.readLine()) != null) { 
      emi.stringContent += "\n" + strLine; 
     } 

    br.close(); 
    } catch (FileNotFoundException ex) { 
     Logger.getLogger(EMailTmpDirRead.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) { 
     Logger.getLogger(EMailTmpDirRead.class.getName()).log(Level.SEVERE, null, ex); 
    } 

谢谢!

作了如下修改,现在没有什么读

StringBuffer temp2 = new StringBuffer(1000); 
    int numRead = 0; 
    char[] buf = new char[1024]; 

    try { 
     ir = new InputStreamReader(new FileInputStream(f), "Cp1252"); 
     while((numRead = ir.read()) != -1) 
     { 
      String temp = String.valueOf(buf, 0, numRead); 
      temp2.append(temp); 
      buf = new char[1024]; 
     } 
     emi.stringContent = temp2.toString(); 

线似乎被跳过 的StringBuffer TEMP2 =新的StringBuffer()。

try { 
     ir = new InputStreamReader(new FileInputStream(f), "Cp1252"); 
     br = new BufferedReader(ir); 
     while(br.readLine() != null) 
     { 
      temp2.append(br.readLine()); 
     } 
     emi.stringContent = temp2.toString(); 
+0

可能重复的[Java FileReader编码问题](http://stackoverflow.com/questions/696626/ java-filereader-encoding-issue) – 2013-05-10 03:18:53

回答

0

不是使用FileReader,使用FileInputStream包裹着一个InputStreamReader;在InputStreamReader的构造函数中指定字符编码(根据this page它看起来应该使用“Cp1252”进行编码)

+0

似乎无法得到它...什么是循环读取它? – parkjohnston 2013-05-10 03:31:37

+0

请参阅编辑...请帮助 – parkjohnston 2013-05-10 03:43:39

+0

尝试将'InputStreamReader'封装在[BufferedReader](http://docs.oracle.com/javase/6/docs/api/java/io/BufferedReader.html)中,然后使用BufferedReader在循环中的readLine()方法(当readLine()读取null时终止循环)。 – 2013-05-10 03:48:11