Ajax + jsp +servlet 中文乱码问题解决办法

本文分享了解决使用GBK编码显示中文、接收中文数据时出现乱码问题的方法,包括设置页面编码、请求编码,以及特殊情况下对Ajax提交的JSON数据进行转码处理。同时指出设置GBK编码需在POST请求时使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信大家在使用上面的方法的时候肯定遇到多中文乱码的问题,现在就来分享一下我的解决的心得


首先,要让页面支持中文的显示我们就得设置页面的编码为GB2312或者GBK,如下

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>


这样页面上面显示中文就没有问题了,但是接下来会发现接受的时候会出现接受中文乱码,我的解决方法是这样的

request.setCharacterEncoding("GBK");

然后后面直接用

request.getParameter();接受中文,完全没有问题(有人也用getBytes 进行转码,我一般不这样用,每个参数都这样转感觉很烦),但是又会发现,一般的表单的数据这样接受没有问题,但是一遇到Ajax 提交数据和这提交json数据来的时候就会又一次出现乱码,这时该怎么解决呢

 ,没有办法,ajax的数据只能够转码了,

用 String p_name = new String(req.getParameter("p_name").getBytes("GBK"),"UTF-8");获得数据

因为设置了request 设置了GBK(我们之前设置了request.setCharacterEncoding("GBK"); ),再在转码是把GBK转成UTF-8(我感觉原因是这样的,方法是我不断的实验出的,可行,原因自己猜测的),基本上没有问题了


希望对大家有所帮助

看到这篇文章的个各位,真是对不起,这里本人犯了一个错误,就是在使用request.setCharacterEncoding("GBK");接受中文是有条件的,必须前方是post提交,这个之前说漏了

对不起,这完全是本人的失误




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值