java 乱码

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(想了半天,这里应该就是Filter类似的作用),code: 

Java code
   
   
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: 

XML code
   
   
<? 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" ?> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值