您所在的位置:开发 > Java > 解析Java中文乱码的处理方法(1)

解析Java中文乱码的处理方法(1)

2007-08-17 09:44 程序犹如人生 BlogJava 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!

本文作者总结了自己几年来在Java开发中遇到的各种各样的中文乱码的解决方法,与大家共享。

AD:

【引自程序犹如人生的博客】为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!如果中国的程序员不会遇到乱码,那么只有使用汉语编程。汉语编程是怎么回事,我也不大清楚,应该是前年吧!我一朋友给我介绍汉语编程,怎么不错不错?当时因为学习忙没去关注这个,等我闲了,那个朋友不弄这个,问他,他也不说不大清楚,最后自己对这个学习也不了了之了。

我写这个不是讲解中英文之间的差距,解码等,我是将我在这几年工作遇到各种各样的乱码的解决方法,总结起来,也希望大家能把自己晕倒解决乱码的方法都说出来,咱们弄一个解决乱码的“葵花宝典”。

对于Java,由于默认的编码方式是UNICODE,所以用中文也易出问题,常见的解决是:

String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);

1、utf8解决JSP中文乱码问题

一般说来在每个页面的开始处,加入:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<%
request.setCharacterEncoding("UTF-8");
%>

◆charset=UTF-8的作用是指定JSP向客户端输出的编码方式为“UTF-8”;
◆pageEncoding="UTF-8",为了让JSP引擎能正确地解码含有中文字符的JSP页面,这在LINUX中很有效;
◆request.setCharacterEncoding("UTF-8");是对请求进行了中文编码。

有时,这样仍不能解决问题,还需要这样处理一下:

String msg = request.getParameter("message");
String str=new String(msg.getBytes("ISO-8859-1"),"UTF-8");
out.println(st);

2、Tomcat 5.5中文乱码

只要把%TOMCAT安装目录%/   webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。  

2)在你的web.xml里加入如下几行:

  <filter>   
<filter-name>Set   Character   Encoding</filter-name>  
<filter-class>filters.SetCharacterEncodingFilter</filter-class>  
<init-param>  
<param-name>encoding</param-name>  
<param-value>GBK</param-value>  
</init-param>  
</filter>  
<filter-mapping>  
<filter-name>Set   Character   Encoding</filter-name>  
<url-pattern>/*</url-pattern>  
</filter-mapping>

3)完成

2、get方式的解决办法

1)打开tomcat的server.xml文件,找到区块,加入如下一行:  

  URIEncoding=”GBK”

完整的应如下:

  port="80"   maxThreads="150"   minSpareThreads="25"   maxSpareThreads="75"   
enableLookups="false"   redirectPort="8443"   acceptCount="100"  
debug="0"   connectionTimeout="20000"    
disableUploadTimeout="true"    
URIEncoding="GBK"  
/>

2)重启tomcat,一切OK。

3、xmlHttpRequest中文问题

页面jsp用的GBK编码

代码:

<%@ page contentType="text/html; charset=GBK"%>
javascript部分

代码:

function addFracasReport() {   
var url="controler?actionId=0_06_03_01&actionFlag=0010";  
var urlmsg="&reportId="+fracasReport1.textReportId.value;  //故障报告表编号  

var xmlHttp=Common.createXMLHttpRequest();  
xmlHttp.onreadystatechange = Common.getReadyStateHandler(xmlHttp,
       eval("turnAnalyPage"));   
xmlHttp.open("POST",url,true);  
xmlHttp.setRequestHeader( " Content-Type " , "
       application/x-www-form-urlencoded);   
xmlHttp.send(urlmsg);         
}

内容导航

网友评论TOP5

查看所有评论(

提交评论

  1. 什么是响应式Web设计?
  2. Java路线图:甲骨文的两年计划

热点专题

更多>>

读书

安全模式:J2EE、Web服务和身份管理最佳实践与策
本书全面阐述Java应用安全的基本知识并介绍一种强大的结构化安全设计方法;介绍独立于厂商的安全架构;列出详细的评估核对表以及

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 移动互联网生活门户 灵客风LinkPhone