[转帖]JAVA常见中文问题的解决方案_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2983 | 回复: 0   主题: [转帖]JAVA常见中文问题的解决方案        下一篇 
lusxingbao
注册用户
等级:少校
经验:1487
发帖:100
精华:0
注册:2012-11-12
状态:离线
发送短消息息给lusxingbao 加好友    发送短消息息给lusxingbao 发消息
发表于: IP:您无权察看 2012-11-12 11:52:04 | [全部帖] [楼主帖] 楼主

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>




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论