『求救』iframe嵌套jsp中文参数乱码问题

溺水的鱼 2009-02-17 12:59:55
我有一个页面弹出一个div,div中放置一个iframe,iframe的src中包含中文参数:类似这样
a.jsp?id=1&name=名称
当弹出这个层时,用request.getParameter("name")取这个参数就变成了乱码。
请问这个问题如何解决。
注:我的所有页面都设置了编码为utf-8,我用HttpWatch看了这个提交,没有ContentType头信息显示提交编码方式为UTF-8,我也不知道iframe中嵌套jsp的这种情况如何给他设置提交的编码方式。
...全文
1927 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
fosjos 2009-02-19
  • 打赏
  • 举报
回复
js自带的url编码和java的不同,可以去下载一个别人写的urlencode的js文件(好像不好找)

所以可以的话还是推荐用a.jsp?id=1&name=<%=java.net.URLEncoder.encode(...)%>
a.jsp内当然还是getBytes->new String
溺水的鱼 2009-02-19
  • 打赏
  • 举报
回复
2月19号。
溺水的鱼 2009-02-18
  • 打赏
  • 举报
回复
new String(content.getBytes("ISO-8859-1"), "GBK");

用这个取出来还是乱码,而且不是中文直接报500错误了
Jacky_Zhu_1983 2009-02-18
  • 打赏
  • 举报
回复
直接在取值的时候
new String(content.getBytes("ISO-8859-1"), "GBK");

其他的地方都不编码...

你如果每个地方都转来转去那太麻烦了...
溺水的鱼 2009-02-18
  • 打赏
  • 举报
回复
我先用
if(unit!='%'){
unit = encodeURIComponent(unit);
}
编码
然后再用
if(unit!='%'){
unit = decodeURIComponent(unit);
}
解码
其中,%的时候编码解码会有问题,所以我把它过滤掉了。
不知道还有没有其他特殊符号会有这个问题。
那位知道原理,拜托给讲解一下。
溺水的鱼 2009-02-18
  • 打赏
  • 举报
回复
来人救命啊!
wipe_tear 2009-02-17
  • 打赏
  • 举报
回复
iframe是啥啊,呵呵
veardn 2009-02-17
  • 打赏
  • 举报
回复
如果用转码,你必须在每一个要接收可能是中文参数的jsp页面都进行转码

这样相当麻烦,建议用过滤器filter,网上搜一下,很多例子
wula0010 2009-02-17
  • 打赏
  • 举报
回复
传参数前先要编码,再取参数,参考例子:
http://download.csdn.net/user/wula0010

多文件上传例子(解决中文乱码)
zhengyu119079436 2009-02-17
  • 打赏
  • 举报
回复
你换个方式试下,将 名称 的值用一个隐藏表单域来保存,另一个页面再用request.getParameter("表单的name")来取值。
pengling1985 2009-02-17
  • 打赏
  • 举报
回复
不好意思哈,没看到 5 楼楼主的回答…
Johnson_Hong 2009-02-17
  • 打赏
  • 举报
回复
那就把a.jsp?id=1&name=名称 encodeurl,在另一个页面java.net.URLDecoder.decode(request.getParameter("name"),"前面编码的字符集")。
pengling1985 2009-02-17
  • 打赏
  • 举报
回复
先配置一下tomcat的 D:\Tomcat5.5\conf\server.xml 文件
<Connector
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
然后,div 中 a.jsp?id=1&name=名称 ,改成这样看看 a.jsp?id=1&name=encodeURI(名称)

你试试看,我的乱码问题这样弄的
溺水的鱼 2009-02-17
  • 打赏
  • 举报
回复
String para = new String( request.getParameter("para").getBytes("iso8859-1"), "utf-8");
这个我试过了,不解决问题。
server.xml我没权限改。我这个应该是get方式提交的。

用encodeURL,encodeComponent之类的,另一个页面我要如何处理呢,还是直接request.get就行了?
Jacky_Zhu_1983 2009-02-17
  • 打赏
  • 举报
回复
中文乱码问题:应该说所有的情况都碰到了吧,解决也是曲折的,经过摸索,总结如下:

1、所有页面都用UTF-8。
2、写过滤器,设置request.setCharacterEncoding("UTF-8")。
3、javascript脚本里用encodeURI(str)。
4、适当的时候,在jsp里用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8")。
5、最容易忽略的是使用"":value=" <%=paraFiles%>",一定要有引号。
6、new String(content.getBytes("ISO-8859-1"), "GBK");
wangju309 2009-02-17
  • 打赏
  • 举报
回复
可以转码,网上这种问题太多了,你随便一搜都能看到,懒了啊
用encodeURL,encodeComponent之类的,搜搜吧
Johnson_Hong 2009-02-17
  • 打赏
  • 举报
回复
a 简单解决方式:String para = new String( request.getParameter("para").getBytes("iso8859-1"), "utf-8");
这样每个地方都要这样去写。。。。

b URIEncoding 用来设定通过 URI 传递的内容使用的编码,tomcat 将使用这里指定的编码对客户端传送的内容进行编码
我们通过 get 方法提交的参数实际上都是通过 uri 提交的,都由这个参数管理,如果没有设定这个参数,则 tomcat 将使用默认的 iso8859-1 对客户端的内容进行编码。

在 tomcat5 中,get 与 post 的处理是分开进行的,对 get 的处理通过 前面的 URIEncoding 进行处理,对 post 的内容依然通过 request.setCharacterEncoding 处理,为了保持兼容,就有了这个设定。

1我们可以通过在 server.xml 中设定 URIEncoding 来解决 get 方法中的参数问题,使用过滤器来解决 post 方法中的问题。
2也可以通过在 server.xml 中设定 useBodyEncodingForURI 为 true ,配合过滤器来解决编码的问题。
blueram 2009-02-17
  • 打赏
  • 举报
回复
中文乱码问题:应该说所有的情况都碰到了吧,解决也是曲折的,经过摸索,总结如下:

1、所有页面都用UTF-8。
2、写过滤器,设置request.setCharacterEncoding("UTF-8")。
3、javascript脚本里用encodeURI(str)。
4、适当的时候,在jsp里用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8")。
5、最容易忽略的是使用"":value=" <%=paraFiles%>",一定要有引号。
6、new String(content.getBytes("ISO-8859-1"), "GBK");

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧