Java中乱码

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

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

       常见中文乱码解决方案:服务器

       1.HTTP的POST请求中文乱码能够经过过滤器去设置HttpRequest的字符集。app

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

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

       4.最后一种状况常常让人抓狂,明明本身设置了Response的字符集,可是仍是乱码。呵呵,丫的,PrintWriter out = response.getWriter();须要在3步后面。就是说先指定响应信息的字符集,而后根据这个字符集获取输出流,不然响应的默认字符流是ISO-8859-1。htm

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

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

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

相关文章
相关标签/搜索