永发信息网

为什么jsp使用URL传中文参数会乱码

答案:5  悬赏:50  手机版
解决时间 2021-11-20 08:38
为什么jsp使用URL传中文参数会乱码
最佳答案
在页面中对URL进行编码,最好不要在URL中传递中文参数否则会出现乱码

1.在页面中对你的URL进行编码

使用------encodeURI(你要使用的中文参数值)如:...?username"+encodeURI(“小甜甜")

2.在后台通过解码来接收该中文参数

使用----String name = new String(request.getParameter("username ").getBytes("iso8859-1"),"utf-8")

3.最好不要在URL中传递中文参数
全部回答
传递的时候需要设置编码格式为utf-8,
获取值的时候也需要设置编码格式为utf-8
因为这种提交是get方式提交,下面附上Get方式的乱码问题的解决办法:
可以在每次发生请求之前对URL进行编码:例如:Location.href="/encodeURI"(http://localhost/test/s?name=中文&sex=女);
超链接提交数据,是以get方式提交的
1
2
3

加入 以下代码是无效的,它是用来解决post方式的乱码问题
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");

而解决get方式乱码,最方便的方法是在tomcat文件中的server.xml文件进行配置
1
2
3

配置 connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8" />


rsp.setContentType("text/html;charset=UTF-8");设置编码格式
resp.setHeader("Content-type","text/html;charset=UTF-8");
req.setCharacterEncoding("UTF-8");设置请求过程中的编码格式在doget中不起作用
在dopost中设置获取表单数据的编码格式是UTF-8
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");

<%
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
%>
需要在接收的时候转码,因为地址栏的参数会转成iso-8859-1
接收的时候转成utf-8就好了。

参考代码:
String strPtname = request.getParameter("ptname"); //获取参数的值
strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8");//转码

试试看吧
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
geforce03 gtx 1050 ti g1 gaming 4g 支持144
轮机工程大证
世纪佳缘问题啊 我是不是成为了阻止的人 或者
一个人死了后五天有五种天气这是什么原因
文件10.74M等于多少B
飞哥与小佛美国三洲地区丹村
从北京开车到信阳怎么走
铜山小学(镇江句容)地址在什么地方,想过去办
电除尘振打高度只有3厘米什么原因?
地上种满了草
竹荪能和牛肚煲汤吗
明天单号车牌能去广州南站吗?
拉的烂梨,还滴着水呢,走高速要不要钱
你会制作引火线?
苦逼学车经历,该怎么办
推荐资讯
浙江法定节假日可以考驾照吗
星行干洗店地址有知道的么?有点事想过去!
高三集合与数列选这题(求详细过程)谢谢!
团贷网可靠吗
秦始皇陵真被烧毁过吗?
一汽杰雅汽车图片及价格
油焖龙虾的做法步骤图,油焖龙虾怎么做好吃
世界上最粗的蛇有多大
4a×12×3/7÷3a+4a×12×4/7÷(4a
铁片电阻103一般用在线路板起什么作用
高层建筑适宜的高宽比是什么
深圳最严“限外令”实施,首日情况如何
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?