中文乱码问题
来源:互联网 发布:淘宝客推广方式大全 编辑:程序博客网 时间:2024/06/11 17:57
在J2EE的应用中,JSP+Struts+Mysql商务网站设计的过程中,常常遇到中文乱码问题.
结合金融项目的实战,总结解决方法如下:
从MVC三层去控制中文字符乱码问题.
如果是get方法过来的,则需要在apache tomcat里设置,具体参照位置搜到
<Connector port="8888" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
就是Connector port位置,8080的位置,没改端口号的情况下,增加:
uriEncoding=”utf-8”
1,对于web页面的乱码问题,需要设置JSP页面头.在<html>之前引入如下:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@page pageEncoding="UTF-8"%>
2,在Struts框架的使用过程中,需要在web.xml中引入filter,且需要在web.xml的<web-app…
节下直接设置,引入方法参照如下:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.litian.filter.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
[注] com.litian.filter.SetCharacterEncodingFilter java代码实质是apache tomcat目录下,
webapps/examples/WEB-INF/classes/filters/ SetCharacterEncodingFilter.java,直接copy到
自己的项目中,并重构实现.
在Action中debug的时候,从web页面接收到的数据如果仍然是乱码的话,可以在action执行代码前加入如下语句参考:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
3,以上设置保证了在struts框架调用的过程中,从view层到control层的数据中文化的实现,但是在MySQL的安装和设置环境中,一定要保证在my.ini中default-character-set=utf8.总共两处设置,从Model层保证了数据格式的统一.注意,MySQL的配置文件改变之后,需要重启MySQL应用服务,从控制面板->服务中停掉后重启.
备注:类SetCharacterEncodingFilter
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 SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
if (ignore || (request.getCharacterEncoding() == null)) {
String encodingTmp = selectEncoding(request);
if (encodingTmp != null) {
request.setCharacterEncoding(encodingTmp);
}
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null) {
this.ignore = true;
}
else if (value.equalsIgnoreCase("true")) {
this.ignore = true;
}
else if (value.equalsIgnoreCase("yes")) {
this.ignore = true;
}
else {
this.ignore = false;
}
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
- 中文乱码问题
- Webshpere 中文乱码问题。
- JPGraph中文乱码问题
- 中文乱码问题
- 中文乱码问题
- 解决中文乱码问题
- AJAX中文乱码问题
- JSF中文乱码问题
- JBuilder2005中文乱码问题
- jsp中文乱码问题
- AO中文乱码问题
- AO中文乱码问题
- 中文乱码问题总结
- Ajax中文乱码问题
- 解决中文乱码问题
- 中文乱码问题
- java中文乱码问题
- 解决中文乱码问题
- 炒股之三大纪律八项注意
- Struts的工作流程
- struts-config.xml
- web.xml
- 标签
- 中文乱码问题
- 用JSP-Servlet构建三层式管理信息系统
- tomcat 下配置多个服务
- Python 5 Module
- poj 1077 Eight
- c++中的私有构造函数
- AOPJDK实现
- 单线表格实现方法讨论
- AOPXML实现