小女子请教各位高手两个困扰了我很久的问题:
我在以下环境下进行的开发;
tomcat5.0、JDK1.5、SQLServer2000、服务器操作系统是window 2000 Advanced Server
运行时正常。然后我把它移植到另外一台一模一样的机器上,操作系统和应用服务器的版本也都一样,可是却在页面的传值过程中出现了乱码。
在之前的机器上页面之间传值时,我使用了request.setCharacterEncoding("UTF-8");接收表单传过来的值;
而在后来的机器上必须要加上
new String ((request.getParameter("function_name").getBytes("iso-8859-1")),"UTF-8")来进行编码的转换,否则出现的是乱码。
这是为什么呀?觉得很奇怪~! 还有一个问题:为什么有些系统下运行好用的java script在有些系统下不好用呢?
我在以下环境下进行的开发;
tomcat5.0、JDK1.5、SQLServer2000、服务器操作系统是window 2000 Advanced Server
运行时正常。然后我把它移植到另外一台一模一样的机器上,操作系统和应用服务器的版本也都一样,可是却在页面的传值过程中出现了乱码。
在之前的机器上页面之间传值时,我使用了request.setCharacterEncoding("UTF-8");接收表单传过来的值;
而在后来的机器上必须要加上
new String ((request.getParameter("function_name").getBytes("iso-8859-1")),"UTF-8")来进行编码的转换,否则出现的是乱码。
这是为什么呀?觉得很奇怪~! 还有一个问题:为什么有些系统下运行好用的java script在有些系统下不好用呢?
response.setContentType("text/html;charset=utf-8");获得的编码不一定是iso-8859-1
转码是 j2ee 十分正常的事情
你可以写个过滤器javascript 和浏览器有关系
不同的浏览器对 javascript 支持不同 下面是个转码的过滤器package netstore.framework.util;
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;
import javax.servlet.UnavailableException;/**
* Example filter that sets the character encoding to be used in parsing the
* incoming request
*/
public class SetCharacterEncodingFilter implements Filter { /**
* Take this filter out of service.
*/
public void destroy() {
}
/**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException { request.setCharacterEncoding("GB2312"); // 传递控制到下一个过滤器
chain.doFilter(request, response);
} public void init(FilterConfig filterConfig) throws ServletException {
}
}web.xml 配置 <filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>netstore.framework.util.SetCharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我使用的是同一台机器上的IE浏览器,访问第一台服务器上的程序没有出现任何问题,而把代码移植到其他的服务器上,这时,就出现了乱码。
我在每一个需要接受参数的JSP页面上都写了request.setCharacterEncoding("UTF-8");
这样和过滤器的效果是不是一样啊?
在 server.xml 的 <Connector 中加入 URIEncoding="UTF-8" jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
如果是中文字符的话 最好 传参数的时候 转换下编码 取到的时候在 把编转化回来
用 java.net.URLEncoder.encode()编码,java.net.URLDecoder.decode()解码
......
Tomcat:修改Tomcat安装目录下conf/server.xml文件,加上URIEncoding="UTF-8"/
<Connector port="8080" .... URIEncoding="UTF-8"/>