欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

中文乱码解决方案 博客分类: 开发技术项目实践操作技巧 jspservletpostget 

程序员文章站 2024-03-21 21:34:28
...

中文乱码解决方案
  >>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文件