WEB项目 乱码终结

1。数据库

在创建的时候,指定其编码为UTF-8.

   (1)oracle:

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
---------------------------------------------
SIMPLIFIED CHINESE_CHINA.UTF8

SQL>

jdbc url无须指定编码。

   (2)postgres:

CREATE DATABASE "EnterInfoPortal"
  WITH OWNER = postgres
       ENCODING = 'UTF8'
       TABLESPACE = pg_default;
GRANT ALL ON DATABASE "EnterInfoPortal" TO postgres;

jdbc url参考:jdbc:postgresql://127.0.0.1/FINANCIAL?charSet=UTF8

   (3)DB2:

db2 "CREATE DATABASE dbname USING CODESET UTF-8 TERRITORY CN"

jdbc url无须指定编码。

   (4)SqlServer:

很久没用过,待补充

   (5)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。struts1.X的action编码处理

struts2.X没用过,应该可以用相应的办法来做,比如弄个Filter

   (1)建一个Servlet(想了半天,这里应该就是2.X里面的Filter类似的作用),code:

view plaincopy to clipboardprint?
import java.io.*;  
import javax.servlet.*;  
import javax.servlet.http.*;  
import org.apache.struts.action.*;  
public class ComicActionServlet 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);  
    }  

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class ComicActionServlet 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);
 }
}

   (2)web.xml配置所有的Action都从这里经过,web.xml:

view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 
<web-app> 
    <servlet> 
        <servlet-name>ReportEngineServlet</servlet-name> 
        <servlet-class>servlets.ReportEngineServlet</servlet-class> 
    </servlet> 
    <servlet> 
        <servlet-name>BackgroundServlet</servlet-name> 
        <servlet-class> 
            com.socix.comic.common.BackgroundServlet  
        </servlet-class> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet> 
        <servlet-name>action</servlet-name> 
        <servlet-class> 
            com.socix.comic.common.ComicActionServlet  
        </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,  
                /WEB-INF/config/struts-config-admin.xml,  
                /WEB-INF/config/struts-config-series.xml,  
                /WEB-INF/config/struts-config-chapter.xml,  
                /WEB-INF/config/struts-config-hotnew.xml,  
                /WEB-INF/config/struts-config-stat.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> 
    <servlet-mapping> 
        <servlet-name>ReportEngineServlet</servlet-name> 
        <url-pattern>/servlets/ReportEngineServlet</url-pattern> 
    </servlet-mapping> 
    <taglib> 
        <taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri> 
        <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location> 
    </taglib> 
    <taglib> 
        <taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri> 
        <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location> 
    </taglib> 
    <taglib> 
        <taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri> 
        <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location> 
    </taglib> 
    <taglib> 
        <taglib-uri>/WEB-INF/tld/struts-nested.tld</taglib-uri> 
        <taglib-location> 
            /WEB-INF/tld/struts-nested.tld  
        </taglib-location> 
    </taglib> 
    <taglib> 
        <taglib-uri>/WEB-INF/tld/struts-template.tld</taglib-uri> 
        <taglib-location> 
            /WEB-INF/tld/struts-template.tld  
        </taglib-location> 
    </taglib> 
    <taglib> 
        <taglib-uri>/WEB-INF/tld/struts-tiles.tld</taglib-uri> 
        <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location> 
    </taglib> 
</web-app> 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
 <servlet>
  <servlet-name>ReportEngineServlet</servlet-name>
  <servlet-class>servlets.ReportEngineServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>BackgroundServlet</servlet-name>
  <servlet-class>
   com.socix.comic.common.BackgroundServlet
  </servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>
   com.socix.comic.common.ComicActionServlet
  </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,
    /WEB-INF/config/struts-config-admin.xml,
    /WEB-INF/config/struts-config-series.xml,
    /WEB-INF/config/struts-config-chapter.xml,
    /WEB-INF/config/struts-config-hotnew.xml,
    /WEB-INF/config/struts-config-stat.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>
 <servlet-mapping>
  <servlet-name>ReportEngineServlet</servlet-name>
  <url-pattern>/servlets/ReportEngineServlet</url-pattern>
 </servlet-mapping>
 <taglib>
  <taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri>
  <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
 </taglib>
 <taglib>
  <taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
  <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
 </taglib>
 <taglib>
  <taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri>
  <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
 </taglib>
 <taglib>
  <taglib-uri>/WEB-INF/tld/struts-nested.tld</taglib-uri>
  <taglib-location>
   /WEB-INF/tld/struts-nested.tld
  </taglib-location>
 </taglib>
 <taglib>
  <taglib-uri>/WEB-INF/tld/struts-template.tld</taglib-uri>
  <taglib-location>
   /WEB-INF/tld/struts-template.tld
  </taglib-location>
 </taglib>
 <taglib>
  <taglib-uri>/WEB-INF/tld/struts-tiles.tld</taglib-uri>
  <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
 </taglib>
</web-app>
 

   (3)注意上面的web.xml里面:<?xml version="1.0" encoding="UTF-8" ?>

   (4)还没完,在web.xml里面用到的struts的配置文件,其头部都和web.xml一样,应为:

<?xml version="1.0" encoding="UTF-8" ?>

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/crazylaa/archive/2009/12/24/5066784.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值