1.数据库
在创建的时候,指定其编码为UTF-8.
(1)oracle:
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
---------------------------------------------
SIMPLIFIED CHINESE_CHINA.UTF8
SQL>
jdbc url无须指定编码。
(2)SqlServer:
留着
(3)MySQL:
安装mysql的时候选utf-8;管理工具安装后,首先设置管理工具 client编码为中文的gb2312 gbk,这与mysql无关
建库的时候选utf-8
建表的时候选utf-8 utf_unicode_ci 两项
建字段的时候选utf-8 utf_unicode_ci 两项
jdbc url参考:jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
2.新建web项目
别的先不干,先选中项目:
右键->properties->Info->Text file encoding:Other:UTF-8。
但我用的JBuilder 2007似乎在JS文件上需要重新弄一下:
新建*.js文件,右键该文件->properties->Info->Text file encoding:Other:UTF-8。再把原来带中文的^C^V过来,save。
如果是把js所在的目录设为UTF-8,然后新建js文件,貌似不能继承,得一个个这么^C^V,烦。
3.tomcat的配置
为了保证某些中文文件名的文件能够被正确访问,需要修改tomcat/conf/server.xml,增加:
<Connector port="8088" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
注意:
开发时,修改了tomcat安装目录,怎么还是乱码?
CAUSE:
开发时,JBuilder2007(eclipse maybe)并没有发布到tomcat安装目录下,而是在
workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/conf
有个相应的server.xml文件,需要改这个,在JB下才有效。具体tmp0/tmp1/tmpN由发布的次数/项目个数来定。
4.jsp页面
保证任何jsp的第一行都是:
<%@page contentType="text/html; charset=UTF-8"%>
并且在jsp页面不要再出现charset的字样!
有的同志第一行按上面所述指定了,下面又来一个:
<META http-equiv='Content-Type' content='text/html;charset=gb2312'>
更有甚者,居然在包含的JS里面来这么一句:
document.charset='gb2312';
你说在JSP里面
<script language="JavaScript" type="text/JavaScript">
document.charset='gb2312';
</script>
写也就罢了,我还好找些,你把它另外存个文件,然后引入,不是磨人吗?
须知编码不统一,才是乱码之根源。
5.filter!(struts 1)
①一个servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class QActionServlet extends ActionServlet {
public static final long serialVersionUID = -1L;
protected void process(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
super.process(request, response);
}
}
②<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
com.qfx.QActionServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/config/struts-config.xml,
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>