BufferedWriter.write()写中文乱码的处理办法
在用BufferedReader和BufferedWriter读写文件的过程中,发现写的文件中假如含有中文字符会有乱码的情况。
假设想把http://www.baidu.com百度首页的内容替换为自己想自己设置的内容,代码如下:
/** * 通过网页URL获取源码 * @param getUrl */ public static void catchHtmlCode(String getUrl){ String filePath = "D:/test/test.html"; BufferedReader buffreader = null; BufferedWriter writer = null; try { URL u = new URL(getUrl); URLConnection connection = u.openConnection(); InputStream inputStream = connection.getInputStream(); buffreader = new BufferedReader(new InputStreamReader(inputStream, "utf-8")); StringBuffer buff = new StringBuffer(); String line; while (null != (line = buffreader.readLine())) { buff.append(line); } String html = buff.toString(); Document doc = Jsoup.parse(html); Element body = doc.body(); Element div = body.select(".head_wrapper").first(); /*替换指定的html标签内容*/ div.html("<h1 style='font-size:30px'>我已将指定的html标签内容替换为空</h3>"); writer = new BufferedWriter(new FileWriter(filePath, false)); writer.write(doc.html()); writer.flush(); } catch (Exception e) { e.printStackTrace(); }finally { FileUtils.closeStream(buffreader); FileUtils.closeStream(writer); } }
当我们使用以下方式创立流时,可能会出现中文乱码,(程序断点查看获取到的中文字符没有乱码,是写完文件之后打开乱码,那就和具体生成文件默认打开编码设置有关)
writer = new BufferedWriter(new FileWriter(filePath, false));
所以我们可以在创立流的时候指定编码,如下:
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(filePath)),"utf-8"));
这样就处理了乱码的问题。也可以设置为“GBK”等格式,看自己需求。
运行结果:
public static void main(String[] args) { catchHtmlCode("http://www.baidu.com"); }
原文作者技术博客:https://www.songma.com/u/ac4daaeecdfe
95后前台妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » BufferedWriter.write()写中文乱码的处理办法
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » BufferedWriter.write()写中文乱码的处理办法