java取文本首位_java – 从文本文件中读取的第一个字符:[复制]

参见英文答案 > Java read file got a leading BOM [  ]                                    6个

如果我写这段代码,我会把它作为输出 – >第一个:

然后是其他线路

try {

BufferedReader br = new BufferedReader(new FileReader(

"myFile.txt"));

String line;

while (line = br.readLine() != null) {

System.out.println(line);

}

br.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

我怎么能避免呢?

解决方法:

你在第一行得到了字符因为这个序列是UTF-8 byte order mark (BOM).如果文本文件以BOM开头,它很可能是由像记事本这样的Windows程序生成的.

为了解决您的问题,我们选择显式读取文件为UTF-8,而不是默认的系统字符编码(US-ASCII等):

BufferedReader in = new BufferedReader(

new InputStreamReader(

new FileInputStream("myFile.txt"),

"UTF-8"));

然后在UTF-8中,字节序列解码为一个字符,即U FEFF.此字符是可选的 – 合法的UTF-8文件可能也可能不以它开头.所以我们将跳过第一个字符,如果它是U FEFF:

in.mark(1);

if (in.read() != 0xFEFF)

in.reset();

现在,您可以继续使用其余代码.

标签:java,unicode,character-encoding,filereader

来源: https://codeday.me/bug/20190926/1818559.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值