为什么我部署的Websphere应用程序有时会不支持中文参数的传递,如以中文为参数查询弹出结果新窗口数据为空,而用英文就有结果, 是字符编码问题呀,需要转换编码。new String(request.getParameter("...").getBytes("ISO-8859-1"), "GBK或GB2312或UTF-8") 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 >不过同样的文件复制到由另一个程序员部署的服务器上又是正常的这也不奇怪,可能是专有部署描述符不同导致的。WebSphere 不熟悉,但 Weblogic 中就可以使用专有部署描述符声明怎样处理字符集和编码问题。WebSphere 和 Weblogic 一样是个非常复杂的东西(或者更复杂一些),因此一定有同样功能的东西。表单提交中,乱码问题产生的原因在于大多数应用服务器将 ISO-8859-1 作为默认的请求编码,而我们更经常使用的是 GBK/GB2321/UTF-8。因此一旦发现乱码,就需要进行编码转换。前边我已经说过了两种不同的转换方法,还有一种更常用的方法就是使用过滤器。非常简单:web.xml 文件:<web-app> <filter> <filter-name>EncodingFilter</filter-name> <display-name>EncodingFilter</display-name> <description>no description</description> <filter-class>com.stormzone.simwar.web.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app>过滤器类文件 EncodingFilter.java:package com.stormzone.simwar.web;import javax.servlet.ServletException;import javax.servlet.ServletContext;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.http.HttpSession;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class EncodingFilter implements Filter { private FilterConfig config = null; // default to ASCII private String targetEncoding = "UTF-8"; public void init(FilterConfig config) throws ServletException { this.config = config; this.targetEncoding = config.getInitParameter("encoding"); } public void destroy() { config = null; targetEncoding = null; } public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)srequest; request.setCharacterEncoding(targetEncoding); // move on to the next chain.doFilter(srequest,sresponse); }}注意两个文件中的 utf-8,你可以根据自己的实际情况修改成 gb2312 或 gbk,以不乱码为检验标准。:) 关于使用axis2问题 请教一个简单Hibernate映射问题 面向模块化开发(MOP) 如何一次查询所有字段 哪位高手进来帮我看看,用Myeclipse写Hibernate的时候报错说找不到.java文件 大家帮帮忙啊,一个简单的用el表达试作为值的javascript不好使,郁闷~~ 我做的登陆系统出的问题 我安装了tomcat,但是不能访问欢迎页面,我应该怎样检查设置?? weblogic8.1连接mysql 以前的精华贴哪里能看到? 请问JS如何调用java中的方法??急 一些思想上的疑问!
<filter>
<filter-name>EncodingFilter</filter-name>
<display-name>EncodingFilter</display-name>
<description>no description</description>
<filter-class>com.stormzone.simwar.web.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>过滤器类文件 EncodingFilter.java:package com.stormzone.simwar.web;import javax.servlet.ServletException;
import javax.servlet.ServletContext;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.http.HttpSession;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class EncodingFilter implements Filter { private FilterConfig config = null;
// default to ASCII
private String targetEncoding = "UTF-8"; public void init(FilterConfig config) throws ServletException {
this.config = config;
this.targetEncoding = config.getInitParameter("encoding");
} public void destroy() {
config = null;
targetEncoding = null;
} public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)
throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)srequest;
request.setCharacterEncoding(targetEncoding);
// move on to the next
chain.doFilter(srequest,sresponse);
}
}注意两个文件中的 utf-8,你可以根据自己的实际情况修改成 gb2312 或 gbk,以不乱码为检验标准。:)