JAVA常见中文问题的解决方法(转)
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常见中文问题的解决方法(转)的更多相关文章
- coreseek常见错误原因及解决方法
		
coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...
 - Java ConcurrentModificationException异常原因和解决方法
		
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...
 - php 使用phpmailer 发送邮件(附带中文乱码的解决方法)
		
下载phpmailer ,在程序里包含class.phpmailer.php 类 ,这里有中文乱码的解决方法 实例代码如下 <html> <head> <title&g ...
 - Java并发编程:Java ConcurrentModificationException异常原因和解决方法
		
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...
 - 【转】Java ConcurrentModificationException异常原因和解决方法
		
原文网址:http://www.cnblogs.com/dolphin0520/p/3933551.html Java ConcurrentModificationException异常原因和解决方法 ...
 - ADB几种常见的错误及解决方法
		
下面列举出几种常见的错误及解决方法. Q1:无效的安装包,安装包已损坏[INSTALL_FAILED_INVALID_APK] A1:请检查安装包是否完整.如果是xpk包,可以通过 手动安装xpk来检 ...
 - java.net.SocketException: Connection reset 解决方法
		
java.net.SocketException: Connection reset 解决方法 最近纠结致死的一个java报错java.net.SocketException: Connection ...
 - Django的admin管理系统写入中文出错的解决方法/1267  Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation ‘locate’
		
Django的admin管理系统写入中文出错的解决方法 解决错误: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and ( ...
 - JMeter 查看结果树监听器响应数据中文显示乱码解决方法
		
查看结果树监听器响应数据中文显示乱码解决方法 by:授客 QQ:1033553122 问题描述 使用监听器-查看结果树(View Results Tree Listener)过程中发现,响应数据面 ...
 
随机推荐
- mysql主从服务器
			
#mysql主从服务器 mysql-bin.003673 | 106 查看错误日志show variables like '%log_error%'; replicate-do-table=testm ...
 - AtCoder - 2568  最小割
			
There is a pond with a rectangular shape. The pond is divided into a grid with H rows and W columns ...
 - ajax beforeSend中无效果
			
asnyc:false 与beforesend 同时使用 无效果
 - yyy的python3第八天学习
			
望着小月亮:https://www.cnblogs.com/triple-y/ 请尊重原创:https://www.cnblogs.com/triple-y/p/9655753.html python ...
 - C++_函数1-编程的基本模块函数
			
以下是<C++ Primer Plus>中第七章的内容: 使用C++函数的3个步骤: 提供函数定义 提供函数原型 调用函数 7.1.1 定义函数 函数分成两类:没有返回值的函数.有返回值的 ...
 - docker load error: open /var/lib/docker/tmp/docker-import-347673752/bin/json: no such file or directory
			
docker save 对应 docker load docker export 对应 docker import 在导出的包的环境中的docker版本跟需要导入的环境中的docker版本不一致也可能 ...
 - 【算法笔记】B1041 考试座位号
			
1041 考试座位号 (15 分) 每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生 ...
 - java.math.BigDecimal cannot be cast to java.lang.String
			
从数据库总查询出的count(*) 函数统计的值,类型转换方法: Map<String,Integer> map = new HashMap<String,Integer>() ...
 - npm install时 报错Maximum call stack size exceeded
			
给npm降级或者升级 降级 : npm install -g npm@5.4.0 升级 : npm install -g npm 升级到最新版
 - PHP报错
			
php.ini ; 错误日志 log_errors = On ; 显示错误 display_errors = Off ; 日志路径 error_log = "/usr/local/lnmp/ ...