爱心技术专栏专题

JAVA常见中文问题的解决方案

摘录:jsp 来源:jsp 加入时间:2007年03月05日
摘要:
JAVA常见中文问题的解决方案

JAVA常见中文问题的解决方法

以下解决方案是笔者在日常生活中遇到的,希望能对你解决JAVA中文问题有所帮助。

1.在jsp页面首部加上<%@page contentType=text/html;charset=GB2312%>
在servlet中使用httpServlerResponse.setContentTpye(tex…

转载:转载请保留本信息,本文来自
http://www.51dibs.com
/html/2006/article/info7/a_1f566ab350b419f5.htm

JAVA常见中文问题的解决方案

站点:爱心种子小博士 关键字:JAVA常见中文问题的解决方案

   
JAVA常见中文问题的解决方案
JAVA常见中文问题的解决方法

以下解决方案是笔者在日常生活中遇到的,希望能对你解决JAVA中文问题有所帮助。

1.在jsp页面首部加上<%@page contentType=text/html;charset=GB2312%>
在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
如果是以数据源的方式连接数据库在配置文件中使用:
<parameter>
<name>url</name>
<value>jdbc:mysql://hostname:port/DBname? &useUnicode;=true&characterEncoding;=iso-8859-1</value>
</parameter>
注意要使用&替换&符号,否则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:
<controller processorClass= com.mypro.action.MyProRequestProcessor/>

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,在<web-app>后面加上
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.kefeiannan.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


客户服务中心信箱:[email protected] [email protected] 网站地图

声明

合作伙伴: