java IO 读取txt文本内容处理时 每个字符之间隔了一个空格
这几天在弄java处理fiddler抓到的包,遇到这个问题。
代码一开始如下:
FileInputStream fis = new FileInputStream(path);
// 防止路径乱码 如果utf-8 乱码 改GBK eclipse里创建的txt 用UTF-8,在电脑上自己创建的txt 用GBK//Unicode
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = "";
while ((line = br.readLine()) != null) {
System.out.println(line);
if (line.contains("Authorization")&&line.length()>150) {
System.out.println("读取到的author为:"+line);
break;
}
}
百度了很多都没搜到如何解决。
没办法只能去看了编码规则:
https://blog.youkuaiyun.com/asde1239/article/details/55189962
https://blog.youkuaiyun.com/xuejianhui/article/details/52650825
然后发现读的txt是Unicode编码。
InputStreamReader 用的是UTF-8 的编码。
改成Unicode依然不能解决问题。
然后又把两篇博客看了遍,发现UTF-8是在传输的时候用的,按每8个位来读取或存放的。而Unicode编码是2个字节16位的。
遂 立马把UTF-8改成了UTF-16,打印了下log,问题就解决了。
有时间记一下,希望能给找不到头绪的人一点帮助。