读取一个网页时编码正确部分中文乱码
来源:互联网 发布:nginx log by lua 编辑:程序博客网 时间:2024/05/17 08:55
在做一个app,需要数据源,就去网上抓取,在展示时方向总是有个别汉字是乱码,抓狂
在网上找的的解决方案五花八门
方案一:在网络请求时设置请求头信息,告诉服务器要请求的编码
方案二:new String(str.getBytes(“encode”), “encode”);
方案三:设置IDE的编码方式
只能说,通通pass,我要请求的编码没错,是utf-8,开发工具的编码也是utf-8,那么为什么会乱码呢
原因
在我们得到一个页面的数据流并读取它时,通常会创建一个缓冲,如byte[] buff = new byte[1024]。
那么问题来了,一个汉字是占用两个字节,这就有可能会造成一个汉字会被分成两次读取,这样这个汉字在转为字符串是自然也就不能正确解码了。
解决方案
既然汉字占两个字节,那么我们就两个字节两个字节的读取呗,把读取时的字节流转为字符流,缓冲也由字节缓冲换为字符缓冲,OK,搞定!
HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream in = conn.getInputStream();InputStreamReader ir = new InputStreamReader(in); //字节流转字符流char[] buff = new char[1024];int len = -1;StringBuffer sb = new StringBuffer();while((len = ir.read(buff)) != -1){ sb.append(buff, 0, len);}in.close();ir.close();
阅读全文
0 0
- 读取一个网页时编码正确部分中文乱码
- java web,charset编码设置正确情况下出现部分中文正常,部分中文乱码的问题
- eclipse编码格式全部正确,网页中文显示依旧乱码问题
- phpmyadmin中文显示正确,网页出现乱码
- C#正确读取中文文件,避免乱码
- XMLHttpRequest读取中文网页时返回乱码的解决办法
- XMLHttpRequest读取中文网页时返回乱码的解决办法
- .NET(C#):关于正确读取中文编码文件
- asp 网页部分出现中文乱码 response.write
- 解决httpurlconnection获取网页数据部分中文乱码问题
- ASP.NET 判断网页编码读取内容,防止乱码
- 从html文件中读取字符,中文部分乱码解决办法
- java读取默认编码是ansi的文本文件时,解决中文乱码问题
- 易语言sqlite3字段使用ANSI编码,导致Navicat读取时出现中文乱码
- java用制定编码读取文件,防止出现中文乱码
- FileReader读取中文txt文件编码丢失问题(乱码)
- 网页编码乱码
- 网页编码乱码
- 查看linux中某个端口(port)是否被占用
- Mysql服务未启动,服务没有报告错误
- [linux配置环境] centos7 python3.5.X+django
- vue开发:vue实现百度搜索下拉提示功能
- VS生成DLL文件供第三方调用
- 读取一个网页时编码正确部分中文乱码
- bzoj1227 [SDOI2009]虔诚的墓主人
- HDU-1176-免费馅饼
- leetcode :455. Assign Cookies
- java枚举类型enum的使用
- Python-OpenCV人脸检测(代码)
- CStdioFile::ReadString无法读取中文解决方法
- centOS7下ping不通外网
- typedef char map是什么?