`

中文乱码解决方案

阅读更多

中文乱码解决方案
  >>HTTP协议传中文的特点:
    对于传英文或数字,可以原样传
    对于传中文,必须对其进行URL编码 
 提示:URLEncoder编码 和 URLDecoder解码  
 编码: URLEncoder.encode(String url,String enc);url带中文的url路径,enc指定传递参数的字符编码 UTF-8是W3C的推荐
 解码:URLDecoder.decode(String url,String enc);url带中文的url路径,enc指定传递参数的字符编码 UTF-8是W3C的推荐
  >>乱码原因:
    服务端二端,使用了不同的编码方式,导致中文乱码的出现
    
  >>处理原则: 
    必须确保服务端二端的编码方式一致或兼容

  >>处理方案
    1)HTML
 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        表示该HTML中的中文按UTF-8编码,同时通知浏览器按UTF-8解码

    2)JSP
 <%@ page language="java" pageEncoding="UTF-8"%>
        表示该JSP中的中文按UTF-8编码,同时通知浏览器按UTF-8解码

    3)Servlet/Filter/Listener
        doGet()
   String username = request.getParametere("username")//按照ISO编码方式解码中文,必定是乱码
          byte[] buf = username.getBytes("ISO");//转回原型 
          username = new String(buf,"UTF-8");//手工再次按UTF-8方式解码
            
        doPost()
          reqeust.setCharacterEncoding("UTF-8");//一定要在取参数之前设置
   request.getParametere("username")//按照UTF-8去解码中文,默认按ISO编码方式 

    4)XML
 <?xml version="1.0" encoding="UTF-8"?>
        表示XML中的中文按照UTF-8去编码

    5)浏览器(查看->编码)

        相当于一个解码工具,可以按照用户指定的编码方式去解码

        如果要看到正确的中文,该解码必须和编码要一致

    6)数据库
       
        当数据库提示:Data to long for username field ...,有二种解决方案
 
        >>修改该字段的长度

        >>修改my.ini文件,争对客户端编码改为GBK或GB2312,服务端无需修改
          再次启动MySQL的服务进程,让他重新加载my.ini文件

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics