小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Tomcat及MySQL中文亂碼問(wèn)題解決方案總覽

 昵稱(chēng)2807 2005-11-18
Tomcat和MySQL組合作為Web開(kāi)發(fā)的基礎(chǔ),已經(jīng)很流行了,但其中的亂碼問(wèn)題讓人煩心,經(jīng)過(guò)一段時(shí)間的學(xué)習(xí)和實(shí)踐,現(xiàn)在有了一些方法消除亂碼。

我用的平臺(tái)是Tomcat 5.5.12+MySQL 4.1.14 操作系統(tǒng)為WinXP sp2 和 Redhat 7.2

一、Tomcat配置的地方,主要針對(duì)5.5.X版本,其他低版本可能無(wú)效

Tomcat安裝到系統(tǒng)時(shí),如果系統(tǒng)的內(nèi)碼為GBK,則能少很多問(wèn)題....

經(jīng)反復(fù)查找后,發(fā)現(xiàn)影響的東西,在Web.XML中 和Server.XML配置一下,就可以消除相關(guān)的影響....

其中conf\Server.XML中,在Connector節(jié)中加入設(shè)置,如:

其中conf\Web.XML中,加入


        jsp
 
            parameterEncoding
            gbk
       

  
            inputEncoding
            gbk
       

  
            outputEncoding
            gbk
       

  
            fileEncoding
            gbk
       

       
            javaEncoding
            gbk
       

二、加入過(guò)濾器能夠解決的問(wèn)題,針對(duì)post提交有效

***************SetCharacterEncodingFilter.java

package com.cecp.filter;

import javax.servlet.*;
import java.io.IOException;

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 encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}

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);

}

}

在Web.XML中,加入


    Set Character Encoding
    com.cecp.filter.SetCharacterEncodingFilter
   
        encoding
        GBK
   

   
        ignore
        true
   


    Set Character Encoding
      /*

二、MySQL配置的地方 大部分針對(duì)4.1.12

 4.1本身支持多語(yǔ)言
 4.1中 庫(kù)和表編碼設(shè)置為GBK ,那么在PhpAdmin和Java中可以處理中文,在其他工具中,需要打開(kāi)連接后加入"Set Names GBK"后,才能使用中文的查詢(xún)和更新

 4.1中,如果設(shè)置庫(kù)為Itainl,可以保持和4.0的兼容,并在其他工具,如Delphi,PB中,可以直接使用中文,可以在過(guò)渡舊數(shù)據(jù)時(shí)使用...

 4.0默認(rèn)編碼為 Itainl,但可以設(shè)置服務(wù)器ini [mysqld] default-character-set=gbk,其效果,相當(dāng)于表內(nèi)容為GBK,但庫(kù)為itain1的方式

四、JDBC驅(qū)動(dòng)串中能夠解決的問(wèn)題

在Jsp或者Bean中直接輸入jdbc串時(shí),如下
jdbc:mysql://127.0.0.1/cecpdmV90_test?useUnicode=true&characterEncoding=GBK

在XML配置文件中輸入jdbc串時(shí),如下
jdbc:mysql://localhost/pdmtest?useUnicode=true&characterEncoding=GBK

五、WebWork托管修正的方法

       WebWork.property文件中,可以配置一下編碼和語(yǔ)言
       webwork.locale=zh_CN
       webwork.i18n.encoding=GBK

六、代碼中修正的方法

使用以下函數(shù)手工轉(zhuǎn)碼.. toCN(vValue);

public static String toCN(String vValue) {
        try {
            return new String(vValue.getBytes("ISO-8859-1"), "GBK");
        } catch (Exception e) {
            return vValue;
        }
    }

七、中文文件上載的問(wèn)題

中文文件上載后,應(yīng)該更名保存比較好

因?yàn)殒溄硬荒苤苯釉L(fǎng)問(wèn)中文文件名,所以,要么采用更名下載的方式,要么就讀到內(nèi)存中,輸出下載

現(xiàn)在,我的處理方式,是上載時(shí),保存文件為另一個(gè)名字,如Guid,再保存GUID和原有的中文文件名,下載時(shí),通過(guò)數(shù)據(jù)庫(kù)查詢(xún)到原有的中文文件名,讀取GUID文件后,賦中文名字到客戶(hù)端,這樣能比較方便的處理

當(dāng)然也可以保持文件原名保存,但容易出現(xiàn)重名,而且,同樣不能直接根據(jù)文件名下載,只能使用getFile.jsp?FileName=文件名.doc的方式,下載真正的文件

另外,有幾點(diǎn)心得,用GBK實(shí)在是好麻煩...以后還是考慮用UTF-8,像DW8等工具,能很好的處理UTF-8中文,Java本身也是支持UTF-8的,這種方式實(shí)在是很不理想,且麻煩。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多