从jsp上获值添加到数据库时出现乱码问题 怎么解决

从jsp上获值添加到数据库时出现乱码问题
不晓得怎么解决啊~~好郁闷

汉字编码问题。以下是我从网上搜索到的相关汉字编码问题的解决方案,希望能帮到你。1 表单提交的数据,用request.getParameter(“xxx”)返回的字符串为乱码或者??
2 直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request. getParameter(“name”)时返回的是乱码;按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用

原因:
1 tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理
2 tomcat对get方式提交的请求对query-string 处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding(“gbk”))不起作用。

解决办法:

首先所有的jsp文件都加上:
1 实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。)

1)只要把%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”
完整的应如下:

<Connector
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。

一、JSP页面显示乱码
下面的显示页面(display.jsp)就出现乱码:
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%
out.print("JSP的中文处理");
%>
</body>
</html>
对不同的WEB服务器和不同的JDK版本,处理结果就不一样。原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。解决办法:在JSP页面中指定编码方式(gb2312),即在页面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>,就可以消除乱码了。完整页面如下:
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%
out.print("JSP的中文处理");
%>
</body>
</html>

二、表单提交中文时出现乱码
下面是一个提交页面(submit.jsp),代码如下:
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<form name="form1" method="post" action="process.jsp">
<div align="center">
<input type="text" name="name">
<input type="submit" name="Submit" value="Submit">
</div>
</form>
</body>
</html>
下面是处理页面(process.jsp)代码:
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%=request.getParameter("name")%>
</body>
</html>
如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.seCharacterEncoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下:
<%@ page contentType="text/html; charset=gb2312"%>
<%
request.seCharacterEncoding("gb2312");
%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%=request.getParameter("name")%>
</body>
</html>

三、数据库连接出现乱码
只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK就OK了。

四、数据库的显示乱码
在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下:
public class Convert {
/** 把ISO-8859-1码转换成GB2312
*/
public static String ISOtoGB(String iso){
String gb;
try{
if(iso.equals("") || iso == null){
return "";
}
else{
iso = iso.trim();
gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
return gb;
}
}
catch(Exception e){
System.err.print("编码转换错误:"+e.getMessage());
return "";
}
}
}
把它编译成class,就可以调用Convert类的静态方法ISOtoGB()来转换编码。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-12-16
这是由于数据库和jsp编码不一致造成的。
不知道你用不用filter,在filt.java里提交时,加入encode编码即可。
第2个回答  2009-12-16
从jsp到数据库有中间层吗?假如有程序控制层(例:java程序)可在调试中看看具体是到哪一步骤上出现了乱码 当然前提是jsp 程序 数据库三者编码统一 还有就是楼上说到的写个过滤器 另外还有一个系统问题(我最近遇到的就是win7和XP上部署都没问题 部署在server2003上就有问题了 调试了一天才解决 加了一句连接池的字符编码)

为什么我的JSP程序想数据库存入汉字时会出现乱码?怎么解决啊?
出现第二种问题时,代表数据库编码有问题。右键你用的数据库--数据库属性可以更换成utf-8具体视图如下显示,在编码过程中要保证项目不出现乱码情况就要在创建项目和数据库时对其编码进行上述规定

jsp插入数据库乱码 中文的参数怎么处理
这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可,2、数据库乱码 这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下: 在数据库连接字符串中加入编码字符集 String Url="jdbc:mysql:\/\/localhost\/digitg...

从jsp页面取得文本插入数据库,乱码!!!
看看浏览器的默认编码,换个浏览器试试。如果不行的话建议你新建一个JSP 写几个简单的输出看看乱不乱,不乱的话把程序一行一行拷进去。乱码这种问题大部分都是COPY时候不小心的,实在不行就手敲吧。。。

“JSP页面提交后,提交的post中文是正常的,但是到达服务器上,中文就乱...
有以下几种方法可以解决 1.在jsp 的java代码执行之前写入在 <% response.setContentType("text\/html;charset=UTF-8")%> 一定要是之前,因为设了这个下面代码才开始生效。可以写在jsp开头。2.在在Servlet中service方法开始部分写入 response.setContentType("text\/html;charset=UTF-8")3.在过滤器中...

jsp程序输出正常,写入数据库中文乱码,插入语句在数据库里没问题
插入数据库里显示到网页是乱码一般就是数据库安装时没选好编码的问题了,myqsl装的时候有一项是选择编码集的,默认不是GBK,要选为GBK,不然就会出现你那个问题,如果没注意到这个问题的话建议重新安装一下。

jsp乱码问题有什么彻底的解决方法
数据库访问时的乱码问题,可以数据库连接中加上useunicode =true 以及用gbk 或gb2312编码就可以了: 在建立数据库时,将数据库中的所有表的编码方式都设置为gbk,原因是JSP中也使用了gbk编码,这样统一的结果是可以减少很多不必要的编码转换问题。另外,在使用JDBC连接MySQL数据库时,连接字符串写成如下形式可以避免一些...

spring mvc 框架 数据存入oracle 变成乱码 如何解决
可以按照下面步骤配置开发环境:设置jsp页面的字符编码;设置http请求的字符集;设置jvm的字符集;设置数据库的字符集。中文乱码多出现在1、2、3。设置这三个地方,可以解决90%以上的乱码问题。数据库字符集不正确导致的乱码出现的几率较少……

Linux环境JSP乱码解决方案linuxjsp乱码
1. 首先,通过在浏览器查看网页源码,确定乱码原因:若显示”&# xx; “格式,则根据该数字值可以确定乱码字符的编码,具体的编码参考即可确定;若是乱码而且显示的文字不同,则说明框架中返回了不同的编码格式字符;2. 根据浏览器查看网页源码,修改JSP服务器及数据库的字符集编码,以确保...

如何处理get\/post提交的中文乱码问题
只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK就OK了。四、数据库的显示乱码 在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下:...

jsp页面添加一条数据到数据库 输入数字就能加入 输入汉字和字母就显示错...
你把你的insert语句打出来单独执行看看能不能执行。一般这种情况是因为你要添的汉字或字母没用 '' 括上。例如:INSERT ADMIN VALUES(1,2)是没有错误的 INSERT ADMIN VALUES(ABC,中文)是错误的 正确的应该是:INSERT ADMIN VALUES('ABC','中文')...

相似回答