各种乱码处理方式

 

出现乱码的原因:编码和解码的过程中,使用的字符集不同

 

字节码--------解码----------->字符

byte                          char

 

字符--------编码----------->字节码

 

常用字符集:utf-8,gbk,   ISO-8859-1(不识别中文)

gbk:一个字符占两个的字节。如:"张三"---->[-43,-23,-54,-45]

utf-8:一个字符占三个字节。"张三"---->[-12,-23,-43,-76,-78,-88]

 

 

1.数据库中保存中文乱码的问题:

    直接向数据库中插入中文记录会出现错误!!!

    解决方法:

             打开命令窗口:

                   showvariables like '%character%';  --查看数据库中与字符集相关参数:

                   需要将MySQL数据库服务器中的客户端部分的字符集改为gbk。

                   找到MySQL的安装路径:my.ini文件,修改文件中[client]下的字符集为gbk

                    

                   *重新启动MySQL的服务器---我的电脑---属性---服务和应用程序---服务--重启my-Sql

                  

 

 

2.Servlet中乱码问题的解决:

         Response向页面响应中文

            解决思路:保证响应内容的编码与浏览器显示的编码一致。

                |----使用字节流响应中文

                           |----设置内容编码:“中文”.getBytes("UTF-8")

                                     |----设置浏览器编码:response.setHeader("Content-Type","text/html;charset=UTF-8")

                      |----使用字符流响应中文

                |----设置内容编码:response.setCharacterEncoding("UTF-8")

                                     |----设置浏览器的编码:response.setHeader("Content-Type","text/html;charset=UTF-8")

                                     |----简写方式:response.setContentType("text/html;charset=UTF-8");

         Request对象接收表单请求参数的中文乱码处理

                |----GET方式----在客户端:使用utf-8提交。在服务器:使用ISO-8859-1对客户端提交的数据进行编码,所以乱码。

         因此,在服务器响应客户端数据时,使用ISO-8859-1取出,再用UTF-8编回来

                           |----new String("中文".getBytes("ISO-8859-1"),"UTF-8")

                      |----POST方式

                        方式一:同get

                           |----new String("中文".getBytes("ISO-8859-1"),"UTF-8")

                             方式二:

                          |----request.setCharacterEncoding("UTF-8")

 

                                    

                                    

3.Cookie中保存中文:

                                    

保存:

                   Stringmsg = "中文";

                   //URL进行编码                                  

                   Stringencode = URLEncoder.encode(msg,"UTF-8");

                   Cookiecookie = new Cookie("test",encode);

                   response.addCookie(cookie);

获取:

 

                   Cookie[]cookies = request.getCookies();

                  

                   Cookiecookie = CookieUtils.findCookie(cookies, "test");

                   //URL解码

                   Stringdecode = URLDecoder.decode(cookie.getValue(),"UTF-8");

                   System.out.println(decode);

                  

                  

                   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值