永发信息网

求助编码问题

答案:1  悬赏:0  手机版
解决时间 2021-11-12 16:24
求助编码问题
最佳答案
问题一:在java中读取文件时应该采用什么编码?
Java读取文件的方式总体可以分为两类:按字节读取和按字符读取。按字节读取就是采用InputStream.read()方法来读取字节,然后保存到一个byte[]数组中,最后经常用new String(byte[]);把字节数组转换成String。在最后一步隐藏了一个编码的细节,new String(byte[]);会使用操作系统默认的字符集来解码字节数组,中文操作系统就是GBK。而我们从输入流里读取的字节很可能就不是GBK编码的,因为从输入流里读取的字节编码取决于被读取的文件自身的编码。举个例子:我们在D:盘新建一个名为demo.txt的文件,写入”我们。”,并保存。此时demo.txt编码是ANSI,中文操作系统下就是GBK。此时我们用输入字节流读取该文件所得到的字节就是使用GBK方式编码的字节。那么我们最终new String(byte[]);时采用平台默认的GBK来编码成String也是没有问题的(字节编码和默认解码一致)。试想一下,如果在保存demo.txt文件时,我们选择UTF-8编码,那么该文件的编码就不在是ANSI了,而变成了UTF-8。仍然采用输入字节流来读取,那么此时读取的字节和上一次就不一样了,这次的字节是UTF-8编码的字节。两次的字节显然不一样,一个很明显的区别就是:GBK每个汉字两个字节,而UTF-8每个汉字三个字节。如何我们最后还使用new String(byte[]);来构造String对象,则会出现乱码,原因很简单,因为构造时采用的默认解码GBK,而我们的字节是UTF-8字节。正确的办法就是使用new String(byte[],”UTF-8”);来构造String对象。此时我们的字节编码和构造使用的解码是一致的,不会出现乱码问题了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
渝恩快运地址在什么地方,想过去办事,
63伏3300uf电容
lge一nexus5是什么牌子手机?
女人要不要藏私房钱?
新手开车怎样正确加减档
歌谱简谱网最近怎么搜不到歌谱了
很多人弄空气刘海涂了那什么粉的口红
城堡5·25寸中低音编识盆喇叭那里有购
从上海去崇明,到了高东收费口想掉头怎么办?
健康糖是什么啊!最好是个举例
洗完脸可以直接就擦霜吗?或者不用水和精华,
滴滴车主和出租车司机
iphone7plus最低是多少gb
搜关于叠层的成语四个字
在闲鱼与人对聊时,为什么有总会有温馨提醒弹
推荐资讯
重庆苍广货运部(松石大道534号附近重庆苍广货
以下哪些物质着火属于d类火灾a铝镁合金b木材c
从高平到中山高铁站怎么坐车
为什么太阳中间会有一个黑点.求各位科普一下
html语言中,复选框设置时value属性有什么作
五行阴土命里缺什么
台达电动扳手怎么样?
风流皇帝042期:双波红绿,零二三头.猜一动物
人际交往中,主动交出信任是不是示弱
龙宫带什么特技
昂首观之的观什么意思
多吃怎么办,拔牙后头孢辛脂夫片一日三次我看
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?