ISO-8859-1转utf-8——jsp中传递中文参数的问题

恬毅 2008-10-31 02:54:12
我的开发环境是eclipse+MyEclipse+tomcat+mysql,struts+spring+hibernate。 我的传送页面a.jsp是utf-8编码。有一条语句如下:
<a href="do_download.jsp?fileName=目标">目标</a>
当我点击传送到do_download.jsp时,由于传输参数的默认编码是iso-8859-1,所以我在do_download.jsp中用以下函数把中文“目标”转为了utf-8编码。
fileName = new String(fileName_a.getBytes("ISO-8859-1"),"utf-8");
问题是:我上面那条语句的转换的编码对有写中文转换有效,但对有些却不行。比如:我在a.jsp中的语句是这样的:
<a href="do_download.jsp?fileName=08年9月安排">安排</a>。点击后在do_download.jsp上显示的是08�?月安�?,就是有些中文可以传输过去,但有些却不行。。请问各位高手是我的转换字符的函数有问题还是tomcat本身的问题。应该怎样解决?谢谢各位了。。。。
...全文
1591 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
恬毅 2008-11-02
  • 打赏
  • 举报
回复
问题解决了。。原来虽然我把mysql数据库的默认编码都设为了utf-8.。但是我导出我的数据库时有一条语句变成了ENGINE=InnoDB DEFAULT CHARSET=gb2312;当我再导入时,有些编码就变成了gb2312.所以导致了有些文字不能正确编码。。我把gb2312改为utf-8就没问题了。。其他还有好多问题都是这个地方引起的。。呵呵。。现在都解决了。。还是谢谢各位的帮助。。我要结贴给分了。。有参与就有分。。呵呵。。
zjc_love 2008-11-01
  • 打赏
  • 举报
回复
配置了Filter 对url传递中文参数也不起作用吧
参数默认是ISO-8859-1的类型
使用new String(str.getBytes(ISO-8859-1),"gb2312")试下
kerry_lulu 2008-11-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 norwolfli 的回复:]
在你的tomcat的server.xml文件中Connector标签下加上:URIEncoding="UTF-8"
[/Quote]

还有你do_download.jsp的编码也要一致
  • 打赏
  • 举报
回复
如果加了 UTF-8 的话,那个链接中的文字不能是汉字,得使用 URLEncoder.encode("汉字", "UTF-8")
转成 URL 编码。
hushengwei1986 2008-10-31
  • 打赏
  • 举报
回复
在页面2:
<%request.setCharacterEncoding("UTF-8");%>
万一不行,你就直接写个过滤器,配置时你过滤所以。
package org.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CharFilter implements Filter{

public void destroy() {
// TODO Auto-generated method stub

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);

}

public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub

}

}
wpabbs 2008-10-31
  • 打赏
  • 举报
回复
页面1:
var url = "do_download.jsp?fileName=目标";
url = encodeURI(url); //转换编码后提交url
页面2:
<% String unName = new String(request.getParameter("unName").getBytes("ISO-8859-1"),"UTF-8"); %>
千骑卷平冈 2008-10-31
  • 打赏
  • 举报
回复
fileName = new String(fileName_a.getBytes("ISO-8859-1"));就行了吧
第二个参数"utf-8"不加试试
恬毅 2008-10-31
  • 打赏
  • 举报
回复
我加了,但还是一样啊。。有些中文能正常显示。。有些却不能。。。
南南北北 2008-10-31
  • 打赏
  • 举报
回复
在你的tomcat的server.xml文件中Connector标签下加上:URIEncoding="UTF-8"

81,094

社区成员

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

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