码迷,mamicode.com
首页 > 编程语言 > 详细

Java中乱码

时间:2014-09-24 13:52:47      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   os   使用   java   ar   文件   数据   

         Java开发中经常会遇到乱码问题。网上提供了各种解决乱问题的方案,比如说Http请求的中文乱码问题,可以通过URLEncoder和URLDecode去解决,虽然问题解决了,但是不优雅,你会发现为了解决乱码问题,代码中增加了几行代码,而且请求端和响应端都要增加URLEncoder和URLDecoder的代码,两边的人员都不爽,都指定了字符集了,还要转码,这样很不优雅。

        其实解决乱码问题很简单,乱码出现的地方肯定是有数据流操作,我们需要秉承一个原则“用什么字符集写,就应该用什么字符集读”。

       常见中文乱码解决方案:

       1.HTTP的POST请求中文乱码可以通过过滤器去设置HttpRequest的字符集。

       2.HTTP的GET请求中文乱码解决方案有两种,一种是new String(request.getParamter("name").getByte("ISO-8859-1"),"UTF-8");另外一种方案,是通过web服务器指定URL请求的字符集。

       3.Response可以通过response.setCharacterEncoding("UTF-8");response.setContentType("application/html; charset=utf-8");来设置响应信息的字符集

       4.最后一种情况经常让人抓狂,明明自己设置了Response的字符集,但是还是乱码。呵呵,丫的,PrintWriter out = response.getWriter();需要在3步后面。就是说先指定响应信息的字符集,然后根据这个字符集获取输出流,否则响应的默认字符流是ISO-8859-1。

       5.文件操作时,记住写入的流的字符集,读出来的流要使用写时候的字符集,解决中文乱码问题。

       总结:用什么字符集去写,就需要用什么字符集去读。

      多说一些,网上很多提出了 new String(val.getByte("ISO-8859-1"),"GBK");这个东西经常误人子弟,如果你的val字符串实际上是已经根据指定字符集的字符串,解决乱码问题还是坚持原则,追根溯源!网上的资源需要认真筛选。


Java中乱码

标签:style   http   io   os   使用   java   ar   文件   数据   

原文地址:http://my.oschina.net/u/1246838/blog/317880

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!