2014-11-06 44 views
1

我正在使用一个txt文件,其中有如下文本: 超人是所有合法高级的主人 - [testim]Java - 无法读取¬Ö(特殊字符)并将其打印

我想读这样的文字,并打印出来在另一份文件,但是当我打印,其打印像这样 超人是所有合法兴奋剂 [testim]

我想要的特级大师将确切的东西打印到文档中,你能帮助我吗? 这里是我的代码:

BufferedReader inputStream = null; 
    PrintWriter outputStream = null; 

    FileInputStream fis = new FileInputStream(new File("completeTextFile")); 
    inputStream = new BufferedReader(new InputStreamReader(fis, "UTF-8")); 
    outputStream = new PrintWriter(new FileWriter("partSplit.txt")); 

    String line; 
    while ((line = inputStream.readLine()) != null) { 
     String[] split = line.split("\\s+"); 
     int num = split.length; 

后,我通过分割空间的文件,然后,我希望把上面的词放在一起,但后来只打印没有特殊字符在两行文字。我试图通过StackOverflow查看,并尝试使用UTF-8,但它仍然无法正常工作。我试图使用UTF-16,然后Java堆空间问题不断发生,即使在我设置了-Xms512M -Xmx2048M之后。

如果您可以帮助我弄清楚如何读取具有此特殊字符的文件,然后在一行中打印文本行,那就太棒了!

编辑: 下面是如何我打印: 对(INT B = 11,B < NUM - 6,B ++){ outputStream.print(分裂并[b] +““); outputStream.print(split [num - 6] +“\ t”);

+1

(1)您没有显示的代码,其中你实际上写出来了。 (2)你的初始文件是用UTF-8还是其他的东西编码的? (3)'inputStream'和'outputStream'是不是'InputStream'和'OutputStream'的变量名称。 – 2014-11-06 21:39:09

+0

'BufferedReader.readLine()'将删除尾随换行符。您可能想要寻找替代方法或追加自己的换行符。 – 2014-11-06 21:41:14

+0

我实际上不知道我的文件是否使用UTF-8格式。我一定会改变变量名称!谢谢你的提示。 – 2014-11-06 21:51:20

回答

1

尝试使用其他的编码象下面...

inputStream = new BufferedReader(new InputStreamReader(fis, "ISO-8859-1")); 

你可以通过这个构造函数输出的编码..

outputStream = new PrintWriter("partSplit.txt","ISO-8859-1"); 
+0

非常感谢!它实际上工作了一点,所以它打印“超人是所有合法的高级Â/ n [testim]的最高掌握者” – 2014-11-07 00:02:33

+0

我用charset添加构造函数到outputstream,看看答案 – luckasx 2014-11-07 12:31:10

+0

谢谢!从现在开始,所有文本都在同一行,但它仍然运行得很好,但仍然存在一个“ÖÖ”显示为“Â...”的问题。您是否知道是否可以解决此问题?再次,非常感谢您的帮助! – 2014-11-07 16:27:27