jsp读取数据库显示中文乱码(jsp读取数据库显示中文乱码怎么解决)

http://www.itjxue.com  2023-04-10 22:31  来源:未知  点击次数: 

JSP中文乱码?咋办?

1、在jsp页中加入一条语句:

%@pagecontentType= ext/html;charset=gb2312%中文显示就正常了。

2、对于从网页中的文本框通过Stringparameter=request.getParameter(“parameter”);方式获得的字符串,均是8859_1的编码,如果想把它显示在网页上就必须得用parameter=newString(parameter.getBytes(“8859_1”),”gb2312”)进行转换,windows和linux这两种系统都是一样的。

有一个简单方法,就是在getParameter()方法获取参数之前,使用request.setCharacterEncoding(GB2312);,将提交的信息转化为GB2312编码。

从jsp页面读取数据库 中文变成问号 mysql

从jsp页面读取数据库操作mysql变成问号是因为编码问题导致。

1.架设服务器安装MYSQL时的会让你选择一种编码,如果这种编码与你的网页不一致,可能就会造成JSP页面乱码.

解决方案:如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题

2.在PHPMYADMIN或mysql-front等系统 创建数据库时会让你选择一种编码,如果这种编码与你的网页不一致,也有可能造成JSP页面乱码.

解决方案:修改数据库编码,如果是数据库编码不正确: 可以在phpmyadmin 执行如下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 。这个命令就是将test数据库的编码设为utf8

3.创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码

解决方案:修改表的编码:

ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

这个命令就是将一个表category的编码改为utf8

4.创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码

解决方案:修改字段的编码:

ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

这个命令就是将test表中 dd的字段编码改为utf8

5.用户提交JSP页面的编码与显示数据的JSP页面编码不一致,就肯定会造成JSP页面乱码.

解决方案:如果是这种情况容易解决,只需检查一下页面,修改源文件的charset即可。如用户输入资料的JSP页面是big5码, 显示用户输入的JSP页面却是gb2312,这种100%会造成JSP页面乱码

6.字符集不正确

解决方案:要注意:

1.平时你在某些网站看到的文字可能有几种编码, 如你看到一个繁体字,它有可能是big5编码,也有 可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点.

2.如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法就是(A)将网站编码设为utf-8,这样可以兼容世界上所有字符, (B)如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为GBK,GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK

7.JSP连接MYSQL数据库语句指定的编码不正确

解决方案:在JSP连接数据库的语句中,带上

useUnicode=truecharacterEncoding=UTF-8autoReconnect=true,

但是千万不要犯和我同样的错误哦。

8.JSP页面没有指定数据提交的编码,就会造成乱码:

解决方案:这种乱码的情况,只需在页面开头加上request.setCharacterEncoding("GBK"); 指定提交的即可。

jsp插入数据库乱码 中文的参数怎么处理

1、JSP页面乱码

这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可,

2、数据库乱码

这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下: 在数据库连接字符串中加入编码字符集 String

Url="jdbc:mysql://localhost/digitgulf?user=rootpassword=rootuseUnicode=truecharacterEncoding=GB2312";

并在页面中使用如下代码:

response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312");

3、中文作为参数传递乱码

当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下: 在参数传递时对参数编码,比如

RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords) 然后在接收参数页面使用如下语句接收

keywords=new String(request.getParameter("keywords").getBytes("8859_1"));

response.sendRedirect("?gh=0001xm=" + java.net.URLEncoder.encode("忘忧草")); String s=new String(request.getParameter("xm").getBytes("ISO8859_1"),"gb2312"); out.println(s);

4、JSP页面乱码加这句?

%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %

5、在form中用get方法传参乱码解决方法 如: 1、 login.jsp

%@ page language="java" contentType="text/html;charset=GBK"% html head

titleget传参乱码问题/title /head body

form name="form1" action="login_do.jsp" method="GET" input type="text" name="username"/br

input type="password" name="password"/input type="submit" value="提交"/ /form /body /html ============ 2、login_do.jsp

%@ page language="java" contentType="text/html;charset=GBK"% %

String temp=request.getParameter("username"); if(temp!=null){ temp=new String(temp.getBytes("8859_1"),"GBK"); }

out.println(temp); %

JSP页面数据库中的中文出现乱码是怎么回事?

首先把你获取的页面的数据用DB的编码方式重新编码一下再存入DB.

如String tstna=request.getParameter("shijuanming");

改成String tstna=request.getParameter("shijuanming");

tstna = new String(tstna.getBytes("ISO-8859-1", "GB2312"));

后面的一个编码方式,如果DB是GB2312,那就是这个,如果不是,改成DB相应的编码方式就行了.

当然,把mysql 和 jsp上编码格式设置一致即可, 一般默认mysql的编码格式是UTF-8, 建议在jsp中也设置为UTF-8, 如果你不想这么做的话要改数据库格式, 也就是说你所有建立的表都要重新建立成GBK编码。

怎么解决jsp中文乱码问题,我要疯了

1、JSP页面出现的中英文乱码:

我们的PageCharset.jsp页面代码如下所示:

[html]?view plain?copy

%@?page?language="java"?import="java.util.*"%

html

head

title中文显示示例/title

/head

body

中文显示的示例。

%

out.print("这里是用jsp输出的中文");

%

/body

/html

当我们在保存我们的文件的时候会出现下面的提示:

整因为在我们的MyEclipse中默认的编码为ISO-8859-1,而ISO-8859-1不支持中文的编码,所以jsp页面代码如果出现中文就不能保存了。对于这样的错误,我们只要在页面上加上支持中文的编码格式就可以了,在jsp页面中加上pageEncoding=“gb2132” 支持中页面的编码格式就可以了。这样我们就能正常保存我们的jsp源文件了。

2、URL传递参数中文乱码

[html]?view plain?copy

%@?page?language="java"?import="java.util.*"?pageEncoding="gb2312"%

html

head

titleURL传递参数中英文处理示例/title

/head

%

String?param?=?request.getParameter("param");

%

body

a?href="URLCharset.jsp?param='中文'"请单击这个链接/a

您提交的这个参数为:%=param?%

/body

/html

启动tomcat运行结果出现url传递的中文乱码:

这里我们需要配置tomcat服务器文件,才能解决这个问题。具体方法是,在tomcat的conf目录下找到server.xml配置文件,找到如下代码

[html]?view plain?copy

span?style="font-size:18px"??Connector?port="8080"?protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"??//span

在后面添加上编码方式,URIEncoding="gb2312" 重新启动tomcat问题就解决了。

3、表单提交中问乱码

对于表单中提交的数据,可以用request.getPraramter("");方法来获取,但是当表单中出现中文数据的时候就会出现乱码。

我们的提交表单的页面,FormCharset.jsp页面如下:

[html]?view plain?copy

%@?page?language="java"?contentType="text/html;?charset=GB18030"

pageEncoding="GB18030"%

!DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?""

html

head

meta?http-equiv="Content-Type"?content="text/html;?charset=GB18030"

titleForm中文处理示例/title

/head

body

下面是表单内容:

form?action="AcceptFormCharset.jsp"?method="post"

用户名:input?type="text"?name="userName"?size="10"?/

密????码:input?type="password"?name="password"?size="10"/

input?type="submit"?value="提交"/

/form

/body

/html

我们的AcceptFormCharset.jsp页面:

[html]?view plain?copy

%@?page?language="java"?contentType="text/html;?charset=GB18030"

pageEncoding="GB18030"%

!DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?""

html

head

meta?http-equiv="Content-Type"?content="text/html;?charset=GB18030"

titleForm中文处理示例/title

/head

body

下面是表单提交以后request取到的表单的数据:br

%

out.println("表单输入的userName值为:"?+?request.getParameter("userName")?+"br");

out.println("表单输入的pasword值为:"?+request.getParameter("password")?+?"br");

%

/body

/html

提交表单:

结果如下:

我们看到我们在表单中的中文数据出现了乱码,为什么楚翔这种情况呢?是因为我们的tomcat中,对于以post方式提交的表单编码格式默认为ISO-8859-1的编码格式,而这种编码格式是不能编码中文的,所以就会出现乱码的现象了。对于这种情况,我们可以对表单中的数据进行处理,在取得表单参数的时候设置编码方式,我们更改了我们的接受表单数据的页面如下所示:

[html]?view plain?copy

%

String?userName?=?request.getParameter("userName");

String?passWord?=?request.getParameter("password");

out.println("表单输入的userName值为:"?+??new?String(userName.getBytes("ISO-8859-1"),"gb2312")+"br");

out.println("表单输入的pasword值为:"?+?new?String(passWord.getBytes("ISO-8859-1"),"gb2312")+"br");

%

这样就得到我们想要的效果啦:

4、数据库操作中文乱码

我们在建立数据库的时候,最好是能选择支持中文编码格式,最好是能和jsp页面编码格式保持一致,这样就尽可能的减少数据库操作中文乱码的问题,最开始的连接数据库的时候,编写好数据库的编码策略,也就是使用这种形式的URL:jdbc:Oracle:thin:@localhost:1521:TEST;userEnicode=true;characterEncoding=gb2312; 这样我们选择的数据库的编码和我们的jsp编码就一致了。

写入到数据库的时候,数据库中中文乱码:

但是如果我们在最开始的时候没有对数据库的编码进行设置,并且我们的数据库中已经有大量的数据的话,我们再向数据库中写入中文数据,数据库中的中文显示为乱码。在写入数据的时候出现乱码,是因为我们在处理表单的时候没有对字符的编码设置,对于这种情况,我们在jsp中或servlet中加入:

rquest.setCharacterEncoding("gb2312");//处理表单请求的时候设置编码。

这样再看我们的数据库,插入的中文字段就不会乱码了。

从数据库中读出中文乱码:

数据库中的中文出现乱码,就是在读取数据库的时候进行转码,这样显示就不会乱码了。我们整理这样的一个转码函数:

public String encoder(String str) throws UnsupportedEncodingException

{

String result = new String(str.getBytes("ISO-ISO-8859-1)"),"gb2312");

}

5 在myeclipse开发工具中打开中文显示乱码

在myeclipse中默认的编码方式为ISO-8859-1,所以打开有其他编译器编码的jsp页面就会出现乱码,是因为两个编译器保存源文件编码格式不同,在UltralEdit可以支持中文,但是在Eclipse对jsp文件的保存方式为ISO-8895-1,这种编码不支持中文,所以就会出现乱码。

对于这种情况,我们可以更改myeclipse默认的编码方案,myeclipse-Window-Preferences-General-Content types-Test-JSP

这样问题就解决啦!

6 Filter批量设置编码格式

我们对于每一个jsp或servlet我们都要设置编码格式,效率有些低,我们的servlet的Filter解决了我们的问题。在前篇写过Filter的解决中文乱码问题的文章,在这里就不赘述了。

需要强调的一点,开始使用Java?model1模型的时候,我们在web.xml中配置只需要配置好jsp页面就可以了,在model2模型中我们使用servlet作为控制器,我们就需要在Filter的配置文件web.xml中配置好servlet的设置,对所有的servlet处理的表单编码进行设置。

[html]?view plain?copy

filter

filter-nameCharsetEncodingFilter/filter-name

filter-classcom.bjpowernode.drp.util.filter.CharsetEncodingFilter/filter-class

init-param

param-nameencoding/param-name

param-valueGBK/param-value

/init-param

/filter

filter-mapping

filter-nameCharsetEncodingFilter/filter-name

url-pattern*.jsp/url-pattern

/filter-mapping

filter-mapping

filter-nameCharsetEncodingFilter/filter-name

url-pattern/servlet/*/url-pattern

/filter-mapping

请问我的jsp网页文本框中输入中文,存到数据库中显示为乱码如何解决

汉字乱码现象有4种类型:

1.文本乱码:是Windows系统显示乱码,如:菜单、桌面、提示框等。这是由于注册表中有关字体部分的设置不当引起的;

2.文档乱码:是各种应用程序、游戏本来显示中文的地方出现乱码。这种乱码形成的原因比较复杂,有第1类的乱码原因,也可能是软件中用到的中文动态链接库被英文动态链接库覆盖所造成的;

3.文件乱码:主要是指邮件乱码;

4.网页乱码:是由于港台的繁体中文大五码(BIG5)与大陆简体中文(GB2312)不通用而造成的。

消除各类乱码的方法

一 系统乱码的消除方法

这类乱码是由于在Windows注册表中,关于字体部分配置不正常造成的,即使你用内码翻译软件处理也不会消除这类乱码。那怎么办呢?请跟我来:

方法一:找一台与你的Windows版本相同且显示正常的机器,依下列步骤进行:

1.在正常机器上选择“开始”→“运行”,在对话框中键入“regedit”,打开注册表编辑器;

2.请你将光标定位到“HKEY_LOCAL_MACHINE\ system\CurrentControlSet\Control\ Fontassoc”,然后选择“注册表”→“导出注册表文件”,再选择“分支”,导出该分支注册表信息到文件(如ZT.REG)中;

3.把ZT.REG文件拷贝到你那显示乱码的机器上,方法是:在显示乱码的机器上运行“regedit”,打开注册表编辑器,选择“注册表”→“导入注册注册表”,把ZT.REG文件导入注册表中即可。

方法二:如果你找不到一台与你的Windows版本相同且显示正常的机器,则需要手工恢复字体部分的注册表

项,其步骤是:

1.首先在显示乱码的机器上选择“开始”→“运行”,在对话框中键入“regedit”,打开注册表编辑器;

2.选择“HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Control\Fontassoc”,正常情况下,会有Associated DeaultFonts、Associated CharSet两个文件夹,其正确的内容应是:

子目录内容

中文Win98

中文Win98(OEM版)

中文Win2000

Associated CharSet

ANSI(00)=“yes”

GB2312(86)=“yes”

DEN(FF)=“yes”

SYMBOL(02)=“no”

ANSI(00)=“yes”

GB2312(86)=“yes”

OEM(FF)=“yes”

SYMBOL(02)=“no”

ANSI(00)=“yes”

OEM(FF)=“yes”

SYMBOL(02)=“no”

Associated DefaultFonts

AssocSystemFont=“simsun.ttf”

FontPackageDecorative=“宋体”

FontPackageDontcare=“宋体”

FontPackageModern=“宋体”

FontPackageRoman=“宋体”

FontPackageScript=“宋体”

FontPackageSwiss=“宋体”

AssocSystemFont=“simsun.ttf”

FontPackage=“新宋体”

FontPackageDecorative=“新宋体”

FontPackageDontcare=“新宋体”

FontPackageModern=“新宋体”

FontPackageRoman=“新宋体”

FontPackageScript=“新宋体”

FontPackageSwiss=“新宋体”

3.当出现汉字乱码时,上述两个文件夹中的内容就会不完整,有的没有Associated CharSet文件夹或其中的内容残缺不全;有的 Associated DefaulFonts下的内容残缺。如果遇到这种情况怎么办呢?其实你只要打开注册表编辑器,在 “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Fonassoc”下,根据以上的正确内容恢复即可。

二 应用程序、游戏乱码的消除方法

明明是中文软件,可显示界面上却出现乱码,这可能是由于注册表中关于字体设置的信息不正确地被改变而造成的,一般是因为软件的中文链接库被英文链接库覆盖而引起的,这种现象经常发生在用微软开发工具,例如VB、VC开发的中文软件上。在这类软件中,菜单等显示界面上的汉字都是受一个动态链接库“.DLL文件”控制,而软件的这个动态链接库一般是安装在Win 98/2000的System目录下的,如果以后你安装了某个英文软件也使用同名的动态链接库,则英文软件的动态链接库就会覆盖掉你原先的Windows\System下的中文软件的动态链接库。这样,当你运行中文软件时就会调用英文的动态链接库,因此出现乱码。解决办法是重新安装中文软件,恢复中文动态链接库即可。

(责任编辑:IT教学网)

更多

推荐微信营销文章