中文乱码问题如何解决(uri传递参数)(已经修改server.xml)

kejiaweire 2009-01-25 12:07:07
我用的是tomcat服务器
在server.xml已经加上了这段
<Connector port="8080" protocol="HTTP/1.1" 
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>

但是传递参数还是乱码.
当我把utf-8改成gb2312时方得解决
可是这样的话很多生辟字还是乱码
请问应该如何解决呢?
...全文
578 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kokobox 2009-02-02
  • 打赏
  • 举报
回复
用EncodeURI两次,java.net包decode一次就可以了
BearKin 2009-02-02
  • 打赏
  • 举报
回复
加个过滤器吧 很容易的

过滤器代码(本人家里没环境 复制别人的过滤器改的 如果有错的话你就自己改下波。。)
  
import java.io.IOException;
import javax.servlet.*;

public class EncodingFilter implements Filter {
   FilterConfig config;
   public void setFilterConfig(FilterConfig config) {
   this.config = config;
   }
   public FilterConfig getFilterConfig() {
   return config;
   }
   public void doFilter(ServletRequest r1, ServletResponse r2, FilterChain chain) {
HttpServletRequest request = (HttpServletRequest)r1;
HttpServletResponse response = (HttpServletResponse)r2;
String encoding = "UTF-8";
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(r1, r2);
   }
  }


web.xml配置


<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>过滤器的位置</filter-class>
</filter>

<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
kejiaweire 2009-01-30
  • 打赏
  • 举报
回复
我晕
怎么都是摘抄的来的
我没连数据库,很简单的测试.
只写了一个servlet,配了过滤器.
我设置了request.setCharacterEncoding("utf-8")
也也设置了response.setContentType("utf-8")
然后,我就是在地址栏里用?加参数,显示乱码
tomcat里的server.xml改成GBK没问题,UTF-8就不行
这么简单的问题
难道这里就没有一个人会?
TO迷失 2009-01-27
  • 打赏
  • 举报
回复
中文乱码问题总结起来有三种:一是页面的乱码,这将页面指令的contentType="utf-8"即可,
二是参数传递乱码:要设置二个地方,一个是tomcat<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
另一个是要编写一个过滤器,过滤所有的页面
三是国际化的乱码问题:这需要在资源文件中将中文转化成unicode码,这可以下专门的编辑工具,也可以用nativeascii -encoding filename命令,还可以在设计的地方直接增加
redlotus_lyn 2009-01-25
  • 打赏
  • 举报
回复
在Action URLDecode一下,尝试一下。
kejiaweire 2009-01-25
  • 打赏
  • 举报
回复
比如我打上http://localhost:8080/web/servlet/deom?name=王
王便显示乱码
l5751311 2009-01-25
  • 打赏
  • 举报
回复
前几天也提了同样的问题 没有得到很好解决 最后总结下就是最好不要在url传参用中文
fenghuo107 2009-01-25
  • 打赏
  • 举报
回复
用GBK好一点

81,092

社区成员

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

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