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

时间:2022-04-30 04:19:24

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

http://www.java-cn.com/club/article-5876-1.html

以下解决方案是笔者在日常生活中遇到的,希望能对你解决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>

JAVA常见中文问题的解决方法(转)的更多相关文章

  1. coreseek常见错误原因及解决方法

    coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...

  2. Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  3. php 使用phpmailer 发送邮件&lpar;附带中文乱码的解决方法&rpar;

    下载phpmailer ,在程序里包含class.phpmailer.php 类  ,这里有中文乱码的解决方法 实例代码如下 <html> <head> <title&g ...

  4. Java并发编程:Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  5. 【转】Java ConcurrentModificationException异常原因和解决方法

    原文网址:http://www.cnblogs.com/dolphin0520/p/3933551.html Java ConcurrentModificationException异常原因和解决方法 ...

  6. ADB几种常见的错误及解决方法

    下面列举出几种常见的错误及解决方法. Q1:无效的安装包,安装包已损坏[INSTALL_FAILED_INVALID_APK] A1:请检查安装包是否完整.如果是xpk包,可以通过 手动安装xpk来检 ...

  7. java&period;net&period;SocketException&colon; Connection reset 解决方法

    java.net.SocketException: Connection reset 解决方法 最近纠结致死的一个java报错java.net.SocketException: Connection ...

  8. Django的admin管理系统写入中文出错的解决方法&sol;1267 Illegal mix of collations &lpar;latin1&lowbar;swedish&lowbar;ci&comma;IMPLICIT&rpar; and &lpar;utf8&lowbar;general&lowbar;ci&comma;COERCIBLE&rpar; for operation &OpenCurlyQuote;locate’

    Django的admin管理系统写入中文出错的解决方法 解决错误: 1267  Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and ( ...

  9. JMeter&&num;160&semi;查看结果树监听器响应数据中文显示乱码解决方法

    查看结果树监听器响应数据中文显示乱码解决方法 by:授客 QQ:1033553122   问题描述 使用监听器-查看结果树(View Results Tree Listener)过程中发现,响应数据面 ...

随机推荐

  1. 数据分析&lpar;9&rpar;&colon;DataFrame介绍

    DataFrame 表格型的数据结构 创建DataFrame 可以通过传入dict的方式,DataFrame会自动加上索引,并且列会有序排列 data = {'state':['a', 'b', 'c ...

  2. Linux signal 常见的信号含义表

    http://blog.csdn.net/xgjianstart/article/details/4544418 通过命令 kill -l  可查看全部信号 SIGHUP 终止进程 终端线路挂断 本信 ...

  3. 将byte&lbrack;&rsqb;数组数据转换为图片用于预览显示

    假如服务器返回给你的图片信息是byte[] 然后你需要将起转换成图片显示到你的view中去: 按以下的步骤 1.将获取的byte数组保存 假如为temp[]; 2.将temp[]转化为bitmap,你 ...

  4. Codeforces Educational Codeforces Round 5 C&period; The Labyrinth 带权并查集

    C. The Labyrinth 题目连接: http://www.codeforces.com/contest/616/problem/C Description You are given a r ...

  5. 8-10-Exercise

    链接:第三次练习 A.ZOJ 3203  Light Bulb 这道题............哎~既可以用数学直接推导出来,也可以三分求,还可以二分求~~~~ NO1.数学公式 这种方法搞的不是很清楚 ...

  6. 微信小程序-滚动消息通知

    写在前面: 微信小程序学的不太多,做了一个简单的项目,回来很快时间内把在深圳两天的房租给赚回来了. 这次我主要想总结一下微信小程序实现上下滚动消息提醒,主要是利用swiper组件来实现,swiper组 ...

  7. 快了快了,你的 MacBook Pro 和 FineUICore!

    着玻璃窗,看到星巴克里那帮人拿着MacBook喝咖啡,你是不是要默念一遍:这帮傻叉,就爱装逼! 不过话说回来,你想不想尝试下这个傻叉的感觉? 是时候了,给自己一个理由,拥有自己的 MacBook Pr ...

  8. 局域网配置dnsmasq

    一.安装dnsmasq centos下安装dnsmasq: yum install dnsmasq 二.配置dnsmasq: 1.编辑配置文件/etc/dnsmasq.conf # 配置上行DNS,对 ...

  9. 3种方法轻松处理php开发中emoji表情的问题

    背景 做微信开发的时候就会发现,存储微信昵称必不可少. 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面inse ...

  10. Javascript Array对象 sort&lpar;&rpar;方法,记忆方法,方法扩展

    相信 有很多 同仁们,尤其是初学者,在记住 Array对象 sort() 方法的排序,规则上,有点困难: 其实sort()方法已经在实际工作中用到很多遍了,可当我仔细推敲,这个sort()方法,什么时 ...