java zhs16gbk_JAVA-----乱码的处理 乱码的解决方法总结

本文总结了Java中常见的乱码问题及其解决方法,包括JSP页面编码设置、Tomcat服务器配置、XMLHttpRequest的中文处理、JDBC ODBC Bridge的Bug及变通方案、Solaris下Servlet的中文问题、Common Mail的乱码问题以及Toad与Oracle字符集设置。通过这些方法,可以帮助开发者有效应对各种乱码场景。
摘要由CSDN通过智能技术生成

为什么说乱码是程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!工作遇到各种各样的乱码的解决方法总结一下。

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

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

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

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

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里加入如下几行:  

Set   Character   Encoding

filters.SetCharacterEncodingFilter

encoding

GBK

Set   Character   Encoding

/*

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编码

代码

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);

}

后台java中获得的reportId是乱码,不知道该怎么转,主要是不知道xmlHttp.send(urlmsg);以后是什么编码?在后面用java来转,试了几种,都没有成功,其中有:

代码

public static String UTF_8ToGBK(String str) {

try {

return new String(str.getBytes("UTF-8"), "GBK");

} catch (Exception ex) {

return null;

}

}

public static String UTF8ToGBK(String str) {

try {

return new String(str.getBytes("UTF-16BE"), "GBK");

} catch (Exception ex) {

return null;

}

}

public static String GBK(String str) {

try {

return new String(str.getBytes("GBK"),"GBK");

} catch (Exception ex) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值