繁体   English   中英

使用FileReader从文本文件中读取一行,使用System.out.println似乎打印在unicode中?

[英]Reading a line from a text file using FileReader, using System.out.println seems print in unicode?

我仍在自学Java,所以我想尝试读取文本文件,步骤1)将其输出到控制台,然后步骤2)将内容写入新的txt文件。

这里有一些我已经google开始的代码并且它正在读取文件,但是当我将行内容输出到控制台时,我得到以下内容(看起来像是在unicode或其他东西中输出...就像每个字符一样与之相关的额外字节....

ÿþFF□u□l□l□ □T□i□l□t□ □P□o□k□e□r□ <SNIP>

这是我通过记事本打开时文件的第一行: Full Tilt Poker Game #xxxxxxxxxx: $1 + $0.20 Sit & Go (xxxxxxxx), Table 1 - 15/30 - No Limit Hold'em - 22:09:45 ET - 2009/12/26

这是我的代码,我是否需要指定编码以将txt文件内容显示到控制台? 我认为简单的文本对于java来说是直截了当的......但是我很新,并且对于如何挑剔java还不太了解。

编辑:我不知道它是否重要,但我目前使用Eclipse作为我的IDE。

package readWrite;

import java.io.*;

public class Read {
    public static void main(String args[])
    {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader("C:\\Users\\brian\\workspace\\downloads\\poker_text.txt"));
            String line = reader.readLine();

            while (line!=null) {
                // Print read line
                System.out.println(line);

                // Read next line for while condition
                line = reader.readLine();
            }

        } catch (IOException ioe) {
            System.out.println(ioe.getMessage());
        } finally {
            try { if (reader!=null) reader.close(); } catch (Exception e) {}
        }
    }
}

ÿþ一开始似乎是一个Byte Order MarkUTF-16编码文件。

http://en.wikipedia.org/wiki/Byte_order_mark#UTF-16

您可能需要以不同的方式读取文件,以便Java可以将这些UTF-16字符转换为System.out可以显示的内容。

尝试这样的事情

FileInputStream fis = new FileInputStream("filename");
BufferedReader reader = new BufferedReader(new InputStreamReader(fis, "UTF-16"));

要么

再次在记事本中打开文本文件,然后选择文件/另存为。 在保存屏幕上(至少在Windows 7中)有一个带有编码设置的下拉菜单。 选择ANSIUTF-8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM