JAVA常見中文問題的解決方案(轉)

post0發表於2007-08-11
JAVA常見中文問題的解決方案(轉)[@more@]

JAVA常見中文問題的解決方法

以下解決方案是筆者在日常生活中遇到的,希望能對你解決JAVA中文問題有所幫助。

1.在jsp頁面首部加上

在servlet中使用httpServlerResponse.setContentTpye(“text/html; charset=GB2312”);可以避免一些中文問題

2.使用JDBC連線mysql資料庫時,連線字串寫成如下形式可以避免一些中文問題:

jdbc://mysql://hostname:port/DBname?user=username&password=pwd&

useUnicode=true&characterEncoding= iso-8859-1

如果是以資料來源的方式連線資料庫在配置檔案中使用:

url

jdbc:mysql://hostname:port/DBname? &useUnicode=true&characterEncoding=iso-8859-1

注意要使用&替換&符號,否則XML檔案在解析的時候會出錯。

3.從資料庫讀出的資料有可能是亂碼,遇到這種問題可以用如下方法解決:

String desc = rs.getString(“desc”);

desc = new String(desc.getBytes(“ISO-8859-1”),”GB2312”);

4.某個頁面提交中文內容給Servlet,Servlet要對提交的內容進行轉碼工作才能正確接收資料,

通常我們是在servlet中增加以下程式碼來解決問題。

httpServlerRequest.setCharacterEncoding(“GB2312”);

5. 在struts中,對資原始檔進行轉碼,使用JDK字帶的轉碼工具:

>native2ascii -encoding BG2312 Myresource.properties Myresource_zh.properties

6.在struts中擴充套件org.apache.struts.action.RequestProcessor類,並覆寫其中的processPreprocess()方法:

package com.mypro.action;

public class MyProRequestProcessor extends RequestProcessor

{

protected boolean processPreprocess (HttpServletRequest request,

HttpServletResponse response)

{

try

{

request.setCharacterEncoding(“GB2312”);

//other code

}

catch(Exception e){}

return true;

}

}

寫完上面程式碼別忘了修改struts-config.xml:

7. 用filter實現(推薦)

package com.kefeiannan;

import java.io.IOException;

import javax.servlet.*;

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.kefeiannan.SetCharacterEncodingFilter

encoding

UTF-8

Set Character Encoding

/*


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945985/,如需轉載,請註明出處,否則將追究法律責任。

相關文章