返回信息流写了个网页,使用session实现网络购物车。
html页面中将购买的商品提交给servlet,servlet中将商品加入购物车,
买完后将购物车中所有商品以列表的形式输出。
乱码问题:html中商品的中文名称提交到servlet中全部为乱码
解决过程:修改MyEclipse中各种参数为utf-8,无效
各种修改response.setCharEncoding();request.setCharEncoding();response.setContentType();request.setContentType()为utf-8 gb2312 GBK等等,均无效
最后,网上找到一种解决方法:
html中,<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
servlet中,String name=new String(request.getParameter("name").getBytes("iso8859-1"),"gb2312");
虽然问题解决了,但依然很郁闷,结果出来了,却不知道是怎么出来的,为什么要这样?这种感觉真的很不好
大家写代码的时候会有这种感觉吗???
求大牛解释为什么要用上面的编解码方式???
这是一条镜像帖。来源:北邮人论坛 / www-technology / #12422同步于 2011/3/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
中文乱码问题
salooloo
2011/3/4镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
<form action="form_action.asp" accept-charset="UTF-8">
<p>First name: <input type="text" name="fname" /></p>
<p>Last name: <input type="text" name="lname" /></p>
<input type="submit" value="Submit" />
</form>
试试这么写
对呀 就是method省略了 默认的get提交,服务器是tomcat6.0
请教大牛 究竟是怎么回事,get提交就会乱码吗?
【 在 wks 的大作中提到: 】
: 我猜,楼主的form用了GET请求(就是<form method="GET">,或者method省略了),而且服务器是Tomcat。是不是?
: --
果然。。。这个问题比较深。。。。。
首先,根据URL的规范,URL中只能有英文数字以及一些符号。本来是不能有中文的。
包括中文在内的特殊字符必须转义,变成类似%1a%2b这种十六进制形式。
但是,规范并没有规定中文应该用哪种编码,比如gb2312或者utf8。浏览器的行为是,按照当前页面的编码,来编码URL中的中文。
因此,首先应该保证所有的JSP或者静态页面或者Servlet都使用相同的编码(比如都是GB2312)
其次,Tomcat服务器默认认为URL的编码是Latin1,也就是只能是英文。这个在Servlet,JSP,web.xml里面都不能设置。应该修改Tomcat服务器的配置文件server.xml,找到<connector>元素,增加URIEncoding="UTF-8"元素。另一种方法就是不用Tomcat,比如改用Jetty。
当然,只有GET请求会出问题,因为中文在URL中。
【 在 salooloo 的大作中提到: 】
: 对呀 就是method省略了 默认的get提交,服务器是tomcat6.0
: 请教大牛 究竟是怎么回事,get提交就会乱码吗?
: 【 在 wks 的大作中提到: 】
: ...................
相关资料能推荐一下吗?
【 在 wks 的大作中提到: 】
: 果然。。。这个问题比较深。。。。。
: 首先,根据URL的规范,URL中只能有英文数字以及一些符号。本来是不能有中文的。
: 包括中文在内的特殊字符必须转义,变成类似%1a%2b这种十六进制形式。
: ...................
恩 大牛说的很对
资料的话 你在网上搜tomcat 中文乱码 会有很多资料 偶菜鸟 看个似懂非懂
【 在 seaver 的大作中提到: 】
: 相关资料能推荐一下吗?
: 【 在 wks 的大作中提到: 】
: : 果然。。。这个问题比较深。。。。。
: ...................
乱码我知道怎么解决 我问的是url规范 ==这方面的资料
【 在 salooloo 的大作中提到: 】
: 恩 大牛说的很对
: 资料的话 你在网上搜tomcat 中文乱码 会有很多资料 偶菜鸟 看个似懂非懂