[JAVA] GBK转UTF-8汉字乱码 发现与解决
来源:互联网 发布:云计算和大数据哪个好 编辑:程序博客网 时间:2024/05/24 04:28
就在昨晚想写一个爬饿了么查找最适合满减价格的外卖,我的步骤是先把网页保存下来先实验正则匹配的程序,
文件打开的方式是
BufferedReader br = new BufferedReader(new FileReader(path));
结果在适配正则的时候出来的字码是乱码怎么办?
查了查要转UTF-8于是就有了
System.out.println(new String(m.group(1).getBytes("GBK"),"UTF-8");这段代码将是将GBK编码的字段转为UTF-8 继而打印,问题也就出现在这里
只要是双数的中文字符就会在最后一个汉字那里显示??,这可急死我了在百度上摸爬滚打查找了半天,都没找到靠谱的答案,只是说GBK转UTF-8会有计算错误,也实验这个方法不管用,查java.io的packge还真的让我找到了一点头绪,我猜测是不是我打开方式不对呢?
因为在FileReader的构造函数里面并没有设置CharsetName的参数,可能在读取的时候就保留了错误所以导致无法补足位数,最后转换的失败.假如在读取的时候就直接转换为”UTF-8"的编码来读取应该会解决问题,抱着这种想法我开始了查文档。
InputStreamReader就是个类解决了我的问题,在这个类的构造函数里拥有CharsetName参数,那我通过
FileInputStream fr = new FileInputStream(path);InputStreamReader isr = new InputStreamReader(fr,"UTF-8");BufferedReader br = new BufferedReader(isr);
String rline ="";<span style="white-space:pre"></span>String line ="";<span style="white-space:pre"></span> while((rline=br1.readLine())!=null) {<span style="white-space:pre"></span> line+=rline;<span style="white-space:pre"></span> }这个流套接。神奇的事情发生了
System.out.println(line);我直接输出成功了经过试验不管是无ROM 还是有ROM的文件都可以使用这个方法来实现正确输出。
PS:这是我第一次在CSDN分享,所以希望来到我blog的朋友多在评论里提一些建议意见。
1 0
- [JAVA] GBK转UTF-8汉字乱码 发现与解决
- java gbk--utf-8乱码解决函数
- GBK与GB2312 解决GBK转UTF-8部分字符乱码
- java gbk转utf-8乱码问题
- java gbk转utf-8乱码问题
- java gbk转utf-8乱码问题
- 解决将汉字GBK码分拆后进行UTF-8编码而出现的乱码
- 理解并解决GBK转UTF-8奇数中文乱码
- C语言汉字gbk转utf-8
- c# GBK,Unicode,UTF-8编码与汉字的转换
- java 【GBK转UTF-8】
- java gbk转utf-8
- java utf-8 转 gbk / gbk 转 utf-8
- convmv 解决GBK 迁移到 UTF-8 ,中文 文件名乱码
- 解决UTF-8和GBK之间转换乱码问题
- 解决utf-8和GBK中文乱码问题
- convmv 解决GBK 迁移到 UTF-8 ,中文 文件名乱码
- 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换
- UVA - 11536 Smallest Sub-Array 纪录
- cocos2dx实现背景的无限滚动
- 安装openfire教程
- ios 自动布局框架介绍
- bash中的加法运算和其他运算
- [JAVA] GBK转UTF-8汉字乱码 发现与解决
- rttymuytnh
- QEMU中的IOCTL
- u9897
- 如何把本地写好的一个工程上传到Github?
- 基于OpenCV的图像形态学处理
- poj2456
- dgrid的store设置
- Activity四种启动模式