- 浏览: 240060 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
aa499357363:
我知道楼主叫雷志民,别问我怎么知道的,。
如何创建和启动一个线程? -
alvin198761:
很好,但是直接杀死进程会导致很多问题,建议不要使用
如何使用Java执行cmd命令? -
k_kid9157:
在JSP中有哪些注释格式? -
sunney2010:
ifFRAME不行哟
如何在关闭页面时自动清除Session? -
liuyuru:
java 初始化块
由于jdk中只规定了必须有一些unicode utf8
等编码的实现,
好像对汉字编码没有什么实现的硬性规定,
所以有时候就会出现乱码问题。
数据库访问时的乱码问题,可以数据库连接中加上useunicode =true 以及用gbk 或gb2312编码就可以了:
在建立数据库时,将数据库中的所有表的编码方式都设置为gbk,原因是JSP中也使用了gbk编码,这样统一的结果是可以减少很多不必要的编码转换问题。另外,在使用JDBC连接MySQL数据库时,连接字符串写成如下形式可以避免一些中文问题:
jdbc://mysql://hostname:port/DBname?user=username&
password=pwd&
useUnicode=True&
characterEncoding=gbk
如果是以数据源的方式连接数据库,在配置文件中使用:
<parameter>
<name>url</name>
<value>
jdbc://mysql://hostname:port/DBname?&useUnicode=True&characterEncoding=gbk
</value>
</parameter>
但是,如果使用一个已经存在的数据库,数据库的编码方式是ISO-8859-1,而Web应用中使用UTF-8,且数据库中已经有很多重要信息,因此不能通过更改数据库的编码方式来解决问题。这个时候,在往数据库中写数据库时,一定要在JDBC连接字符串中加入“useUnicode=True&characterEncoding=ISO-8859-1”,这样可以顺利的往数据库中写入正常的数据。但是,在将数据读出数据库时,乱码又会出现,这个时候就应该在数据取出时对其转码,可以将转码功能写为一个函数,具体实现如下:
public String charConvert(String src){
String result=null;
if(src!=null){
try{
// 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组->通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。
result=new String(src.getBytes("ISO-8859-1"),"gbk");
}catch(Exception e)
{
result=null;
}
}
return result;
} 于是,在从数据库读出数据过后调用charConvert(rs.getString("colName")),这样就可以正常显示数据库中的中文数据了。
JSP中输出中文的乱码问题
所谓在JSP输出中文,即直接在JSP中输出中文,或者给变量赋中文值再输出等,这种情况下的乱码问题往往是因为没有给JSP页面制定显示字符的编码方式,解决问题如下:
·在JSP页面头部加上语句<%@ page contentType="text/html;charset=gbk"%>(在Servlet页面中使用
httpServletResponse.setContentType("text/html;charset=gbk")),最好同时在JSP页面的head部分加上<meta http-equiv="Content-Type" content="text/html;charset=gbk">
·在每次要输出中文的地方主动转换编码方式,比如要在页面中输入“中文”二字,就可以用以下方式:
<%
String str="中文";
byte[] tmpbyte=str.getBtyes("ISO-8859-1");
str=new String(tmpbyte);
out.print(str);
%>
获取表单提交的数据时的中文乱码问题
在没有加任何其他处理之前,用request.getParameter(panamName)获取表单提交中的数据,且表单数据中含有中文时,返回的字符串会出现乱码。出现这种问题的原因是Tomcat的J2EE实现对表单提交,即以POST方式提交的参数采用默认的ISO-8859-1来处理。
比如,建立一个test.jsp,内容为:
<%@ page contentTyp="text/html;charset=gbk"%>
<%
String str=request.getParameter("chStr");
if(str==null) str="没有输入值";
%>
<html>
<head>
<title>中文Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
<meta http-equiv=param content=no-cache>
</head>
<body>你输入的内容为:<%=str%><br>
<form action="test.jsp" method="post">
请输入中文:<input type="text" name="chStr">
<input type="submit" value="确定">
</form>
</body>
</html>
运行过后,在输入框中输入汉字“中文”,提交过后再显示出来后就变成了一堆乱码。解决此问题的办法有两个。一是不修改其他设置,只是在将表单中的中文数据取出来过后再转换编码,方法如语句String str=request.getParameter("chStr");String str=new String(sre.getByte("ISO-8859-1"),"gbk"),但这种方法只是从一个局部来考虑问题,如果这样的地方太多,就不得不将这条语句重复写很多次,在比较大的项目中,这是一种不太可行的方案。另一个方法就是让对所有页面的请求都通过一个Filter,将处理字符集设置为gbk。具体的做法如下(在Tomcat的webapps/servlet-examples目录有一个完整的例子,也可以参考其中web.xml和SetCharacter EncodingFilter的配置):
首先将%TOMCAT%/webapps/servlets-examples/Web-INF/classes/filters/目录下的文件SetCharacterEncodingFilter.class拷贝到自己应用的/Web-INF/classes/com/util/filter目录下;然后再在web.xml文件的<web-app>后面加上如下配置代码:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.ccut.struts.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>
URL中的中文问题
对于直接通过在URL中传递中文参数,如“http://localhost/a.jsp?str=中文”这样的get请求,在服务端用request.getParameter("name")时返回的往往是乱码。按以上的做法设置Filter没有用,用request.setCharacterEncoding("gbk")的方式,仍然不管用。
例如,建立test2.jsp文件,内容为:
<%@ page contentTyp="text/html;charset=gbk"%>
<%
String str=request.getParameter("chStr");
if(str==null) str="没有输入值";
%>
<html>
<head>
<title>中文Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
<meta http-equiv=param content=no-cache>
</head>
<body>你输入的内容为:<%=str%><br>
<form action="test.jsp" method="post">
<a href="test2.jsp?chStr=中文">点击这里提交中文参数</a>
</form>
</body>
</html>
运行后,可见通过URL传递的中文参数取出来过后变成了乱码,造成这种结果的原因是Tomcat中以get方式提交的请求对query-string处理时采用了和post方法不一样的处理方式。
解决这个问题的方法是打开Tomcat安装目录下的/conf/server.xml文件,找到Connector块,往其中添加URIEncoding="gbk",添加过后完整的Connector块代码如下:
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="gbk"
/>
在Struts中证实可以解决URI传递乱码问题.
可以这样做
1.设定Tomcat的URI编码为"UTF-8":修改%tomcat%\conf\server.xml中的<Connector>在中间加入URIEncoding="UTF-8";
2.先在页面上encodeURI(url);
3.后台代码中直接取出来的中文参数就已经OK了.
4. 试一试request.setCharacterEncoding("GBK");
不过这种方法用在servlet中行不通,在servlet中就必须对URI进行处理,Tomcat中有没有加入URIEncoding都没有差别.
发表评论
-
Hibernate知识点
2010-12-20 08:47 35861 什么是Hibernate Hibern ... -
struts2知识点
2010-12-19 23:28 26221,Struts1和Struts2的区别和对比 1 ... -
struts1 struts2 国际化
2010-12-02 11:21 1726struts1国际化 1,在struts-cofig.xml ... -
struts1知识点
2010-11-26 10:51 2292对一个星期的 Struts1 进行笔记总结: ... -
jsp 七大动作
2010-11-17 20:49 6657jsp动作 1.创建bean对象: <jsp ... -
jsp 自定义标签
2010-11-17 11:56 2235第一版本: 为什么要使用自定义标签呢? 主要是为了取 ... -
监听器
2010-11-16 19:58 1289监听器概述 1.Listener是Servlet的监听 ... -
web应用最终可以以哪种形式进行部署
2010-11-16 08:58 1554EAR(Enterprise Archive) Java ... -
JSP中forward和redirect有什么区别?
2010-11-09 16:30 1624解释一: RequestDispatcher.forwa ... -
java 导出Excel文件
2010-11-09 11:22 1429这是项目其中的一个功能 1前台: ... -
Get 和 Post 之详解
2010-11-08 10:49 10941.HTTP请求格式: &l ... -
最简单的文件上传
2010-11-04 20:32 1214文件上传实例 testFileUpload.jsp代码 ... -
太多的连接
2010-10-18 08:46 904今天开发项目的时候,总是报错,可是就是找不出原因,后来根据抱错 ... -
log4j写日志
2010-10-17 21:17 1195好处:便于维护与管理 ... -
如何实现数据水晶分页显示的功能?
2010-10-10 16:30 925这就是要显示的结果 首先要一个好看点的css样式 p ... -
实现业务系统中的用户权限管理
2010-10-07 20:50 1092最近学那个用户权限管理系统,郁闷的很啊,总是理解地云里云雾 ... -
如何在关闭页面时自动清除Session?
2010-10-06 09:40 41291、在要关闭的页面中的<head>处加入如下的ja ... -
Java中四种XML解析技术
2010-10-05 19:46 1453(一)DOM(JAXP Crimson解析器) DOM是用与平 ... -
在Servlet与JSP中取得当前文件所在的相对路径与绝对路径
2010-10-05 10:11 1230System.out.println("根目 ... -
如何在Web程序中实现定时运行的功能?
2010-09-28 21:01 2489定时器在Web中的应用 关键字: java定时器在w ...
相关推荐
很详细的java中文乱码处理文档,当然着是对于struts2之前的,初学者比较合适去看看
java中文乱码处理,本文中几个方法解决了中文乱码的问题 希望对你有帮助
乱码的处理!程序员永远无法避免的话题,解决乱码总汇
Java编程乱码处理方法大全,包括纯Java代码,servlet类,JSP类,EJB类的乱码处理方法。希望大家能用的着。
js 中乱码处理法方式 encodeURIComponent(encodeURIComponent(customerAddress)) decodeURIComponent(customerName) js到java encodeURI(url) String qijuType= new String(request.getParameter( (...
JAVA 乱码问题,JAVA 乱码问题,JAVA 乱码问题JAVA 乱码问题JAVA 乱码问题JAVA 乱码问题
乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理文件乱码处理...
解析Java中文乱码的处理方法解析Java中文乱码的处理方法解析Java中文乱码的处理方法解析Java中文乱码的处理方法解析Java中文乱码的处理方法
Java乱码学习 免费下载 欢迎分享 Java乱码学习 免费下载 欢迎分享
java乱码自己解决的办法
解决java web开发中遇到的前后台传值乱码问题。
java处理中文乱码的三中方法 1.类字符转换 2.struts配置文件处理 3.web.xml配置文件处理
java 乱码 转换 utf
java乱码解决方案,在使用eclipse时出现的乱码问题,帮助解决
java开发乱码问题处理大全,让你迅速成为高手
本资源用来解决java中文乱码问题,有很多解决java中文乱码的方法
Java乱码问题解决方法,java乱码怎么解决,java项目乱码,java乱码处理,
在Java编程中,经常会碰到汉字的处理及显示问题,以不小心就会产生一大堆乱码或者问号。造成这种问题的根本原因是Java中默认的编码方式是Unicode,而中国人通常使用的文件和DB都是基于GB2312或BIG5等编码,故会出现...