2 qq1252776430 QQ1252776430 于 2016.03.08 13:45 提问

html当表单name为中文时,servlet无法识别该中文属性传递的值

html中
select name="颜"
option value="红">红</option

servlet中String color=request.getParameter("颜");
response.setContentType("utf-8");
PrintWriter pw =response.getWriter();
pw.println(color);

结果:The selected color is: null

并不是给参数设置中文出现乱码,而是给需传递的属性命名时使用了中文,无法传递。
尝试过将html另存为utf-8,unicode,没效果。
在页面为ansi格式的时候,因为用的get方式,可以看到明文传递值是%D1%D5,将servlet改为getParameter("%D1%D5"),getParameter("D1D5")也都无效。
平时也不会用中文做传递值名,只是无意中发现这种情况,想请问下原因和处理方法。

4个回答

crazy_snail_
crazy_snail_   2016.03.08 14:58

设置一下字符集,utf-8,然后获取的时候在java设置字符集试试

rui888
rui888   Ds   Rxr 2016.03.08 15:19

为什么你的name 要用中文呢。还有你的项目工程字符集设置下。

kzy8462
kzy8462   2016.03.08 15:23

response.setContentType("utf-8"); 括号中少个东西, response.setContentType("text/html;charset=UTF-8");加上这个试试

Royal_lr
Royal_lr   Ds   Rxr 2016.03.08 17:22

name一般不会用中文,,

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!