又遇乱码问题. URLEncoder.encode(input, "UTF-8") ;

lfxhyf7979 2007-08-15 11:15:58
1. 客户端对中文使用了urlencode URLEncoder.encode("input", "UTF-8") ;
2. 服务器端为tomcat ,spring mvc框架
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
3. 服务器端如何才能正确获得中文信息?

目前用了个笨办法,
URLDecoder.decode( req.getQueryString(),"UTF-8" ) ,然后从中解析数据.
不知是否还有其他解决方案.


...全文
1174 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kalaafeng 2007-08-15
  • 打赏
  • 举报
回复
前提条件,每个页面使用
<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage="" %>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
这个你肯定已经写了

1.添加过滤器
在TOMCAT中找到这2个文件RequestDumperFilter.java,SetCharacterEncodingFilter.java,他们位于%Tomcat%\webapps\jsp-examples\WEB-INF\classes\filters,加到你的工程文件里去,编译他们。

2.配置WEB.XML
在web.xml里加入这一段
……
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
……

3.修改server.xml
在server.xml修改2个地方
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding='GBK'/>
<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="0"
useURIValidationHack="false" protocol="AJP/1.3"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"
URIEncoding='GBK'/>

以上是网上参考的,试试吧
不过比较麻烦
个人觉得,还是我前面的那种方法比较简单方便





kalaafeng 2007-08-15
  • 打赏
  • 举报
回复
楼上注意大小写
request.setCharacterEncoding("gb2312");
而且要写在程序的开头

这样写就不用逐一解析了
jeanissong 2007-08-15
  • 打赏
  • 举报
回复
可以继承父类,加上一句request.setcharencoding("gbk");
super.父类的方法

81,091

社区成员

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

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