javaweb----中文乱码的处理

一、服务器对于request中的参数解码

首先应该用setCharacterEncoding将编码格式设置为“UTF-8”

request.setCharacterEncoding("UTF-8");

1、使用post提交表单,解析方式

如果使用的是post方式提交,则对于中文来说可以直接通过getParameter()来获取所传的值

    String username = request.getParameter("username");
    String password = request.getParameter("password");

2、使用get提交表单,解析方式

由于get方式所传的值是在url中直接携带的,所以request.setCharacterEncoding(“UTF-8”);
并不起作用。因为request并没有所传的值,且tomacat7.0及之前的版本的默认编码格式为
ISO-8859-1,所以需要通过以下代码来进行解码。(如果是tomacat8.0或以上则不需要,因为tomcat8.0之后默认编码格式已经改为了“UTF-8”)

String username = new String(request.getParameter("username").
                    getBytes("ISO-8859-1"),"UTF-8");

二、服务器对于response中的参数解码

首先,对于中文的解码应该设置response的contentType,给浏览器指明他应该用何种方式来进行解码。

    response.setContentType("text/html;charset=UTF-8");

其次,有两种方式给浏览器直接返回中文信息的方式。
第二种,要在getBytes中传入所对应的解码格式,否则会使用操作系统的编码格式GBK。

    response.getWriter().write("你登陆成功!");
    response.getOutputStream().write("已登录成功".getBytes("UTF-8"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值