博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA 字符编码:如何使用字节流读取UTF8编码的文件
阅读量:6555 次
发布时间:2019-06-24

本文共 655 字,大约阅读时间需要 2 分钟。

hot3.png

我们一般解析文本文件的时候都会使用到字符流,如何使用字节流来独缺UTF8编码的文本文件呢?

try(FileInputStream fis=new FileInputStream(f)) {		    	int len=-1;		    	byte[] b=new byte[2];		    	ByteArrayOutputStream baos=new ByteArrayOutputStream();		    	while((len=fis.read(b))!=-1){		    		baos.write(b, 0, len);		    	}		    	System.err.println(baos.toString("UTF-8"));			} catch (Exception e) {				e.printStackTrace();}

这里有几个问题 ,第一个问题是如果我们直接在while语句里面使用byte数组作为构造参数配合编码utf8打印出string 结果,会发现byte的大小会决定是否乱码,只有当byte的大小很大的情况下一次可以存储整个流的字节信息不回有问题,其他情况下都会出现问题,那是因为utf8编码的长度是不确定的,有可能分别为1,2,3.这时候byte'大小会导致编码被拆开,导致输出乱码

第二unicode只是规定了编码字符集,utf8是具体的实现存储方式自己实现的

 

转载于:https://my.oschina.net/payzheng/blog/685592

你可能感兴趣的文章
P51、面试题5:从尾到头打印链表
查看>>
有关一些 c++ cmath 库中的函数的精度问题
查看>>
HTML Input Text cursor position control
查看>>
阿里云应用安装 小记
查看>>
The Google File System(前五章,翻译的略乱)
查看>>
RUP 迭代开发计划的两种方法
查看>>
PHP中static关键字
查看>>
python处理xml实例
查看>>
从《一生所爱》到《世间始终你好》
查看>>
UIStackView相关
查看>>
数据库
查看>>
20145240问卷调查
查看>>
[linux] uptime 命令中关于平均负载的解释
查看>>
Algs4-1.4.25扔两个鸡蛋
查看>>
Algs4-2.4.22调优先队列的整数组大小
查看>>
设计模式之建造者
查看>>
模块化的JavaScript开发的优势在哪里
查看>>
上海某软件公司电话面试分享
查看>>
TCP 和 UDP 协议发送数据包的大小 (转载)
查看>>
用Alamofire进行网络请求的一段代码解析(一)
查看>>