日期:2014-05-17  浏览次数:20793 次

URL传中文,后台接受显示都是问号 ?(用过URL重写,也就是伪静态)

这是我页面URL的链接

这是经过URL重写(伪静态)的规则。

通过断言,可以看见request里面是已经接收到了中文
但,取出参数复制给String类型之后,显示的就是 问号 ?
几个中文就显示几个问号。困扰了很久了。
然后,如果不结果URL重写,就没有这样的问题。怎么办?
设置过request。response 的编码格式,也都没用。



------解决方案--------------------
sou原来是什么格式的?
另外说你Eclipse默认的编码格式是什么?默认的显示格式是什么?
------解决方案--------------------
引用:
Quote: 引用:

sou原来是什么格式的?
另外说你Eclipse默认的编码格式是什么?默认的显示格式是什么?

sou 就是中文啊。   是 String格式的。


晕了。String格式的。。。。。
看这篇吧
http://blog.csdn.net/rzleilei/article/details/10019527
------解决方案--------------------
后台用java.net.URLDecoder.decode来解码看看
------解决方案--------------------
使用的tomcat没有特殊配置过吧
------解决方案--------------------
我个人建议,干嘛要带那么多的参数,参数都保存在session里边不好么,我也用重写,但重来不带中文的参数,还有想要他支持中文,还要写配置的
------解决方案--------------------
由于url中的get参数已经是中文了,所以传输到tomcat应该也是中文
可能tomcat对get参数中的中文进行了重新编码,所以再用servlet接收的时候,编码就已经变了。

所以建议,检查一下tomcat server.xml中对编码的配置,再确定一下request的解码方式。

当然,一般情况下,get请求参数中有中文是要先转码再传输的。
------解决方案--------------------
引用:
由于url中的get参数已经是中文了,所以传输到tomcat应该也是中文
可能tomcat对get参数中的中文进行了重新编码,所以再用servlet接收的时候,编码就已经变了。

所以建议,检查一下tomcat server.xml中对编码的配置,再确定一下request的解码方式。

当然,一般情况下,get请求参数中有中文是要先转码再传输的。

++
tomcat 的默认编码为ISO-8859-1,可以设置URIEncoding=UTF-8
------解决方案--------------------
引用:
Quote: 引用:

我个人建议,干嘛要带那么多的参数,参数都保存在session里边不好么,我也用重写,但重来不带中文的参数,还有想要他支持中文,还要写配置的

我怀疑的,就是你说的 重写不支持中文,估计就是这样原因,导致的。
后来我在JS 里面加了 decode(),中文转码。解决了。


+2 曾经我也遇到过一个传值乱码问题,从数据库到文件编码和eclipse编码等都检查过了都不行,后来是在tomcat里的配置文件改编码才可以的