Java 按行读取UTF-8文件,开头第一行总会有一个不可见字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 按行读取UTF-8文件,开头第一行总会有一个不可见字符相关的知识,希望对你有一定的参考价值。

文件打开代码:
FileInputStream fileInputStream = new FileInputStream(fileHandle);
InputStreamReader inputStream = new InputStreamReader(fileInputStream, "UTF-8");
readerBuffer = new BufferedReader(inputStream);
文件读取代码:
String strLine = null;
try
strLine = readerBuffer.readLine();
catch (IOException errRead)
return null;


将文件另存为ASCII格式就没有这个问题。请问是什么原因造成这个问题?

这个是叫做BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。
没有BOM 则表示是默认的ASCII
BOM主要用途是给类似txt sublimetext notepad 之类的ide看的 让它们能够知道用哪种编码显示里面的内容
参考技术A 文件编码的UTF8withBOM(M$搞的),Java是UTF8withoutBOM。
那个是字节顺序标记

按行读取txt文本

#!/usr/bin/python

import csv
NewSN = ""
#read last line head data
with open(\'SFPrintLabel.txt\',"r") as file:
file_content = file.readlines() #把全文档读取为一个表,每一行为一个元素
file_line_last01 = file_content[0] #读取第一行字符串内容
file_line_last = file_content[-1] #读取最后一行字符串内容
target = file_line_last[:12] #截取前12个字符并存入变量target
print(target)
print(file_content)
print(file_line_last01)
print(file_line_last)

file.close()

以上是关于Java 按行读取UTF-8文件,开头第一行总会有一个不可见字符的主要内容,如果未能解决你的问题,请参考以下文章

java 按行读取utf-8文件且处理每行string,将处理后的string写到一个新的utf-8格式文件,不能有乱码

HDFS中的一个文件的内容可不可以一行一行地读取出来

使用java的输入输出流将一个文本文件的内容按行读取,每读一行就顺序添加行号,并写入到另一个文件中

利用java.nio的FileChannel能够实现按行读取文件吗?(解决了)

java读取UTF-8的txt文件发现开头的一个字符问题

面试官:vim中如何跳到文件的开头,第n行,最后一行?