jsp程序输出正常,写入数据库中文乱码,插入语句在数据库里没问题

jsp程序输出正常,写入数据库中文乱码,插入语句在数据库里没问题,第1张

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

1、项目---右击---属性----资源----文本文件编码----其他----选择与默认的空间不同的编码(UTF-8/GBK)

2、也可以更改全局的编码,方法类似。窗口---首选项---普通-----工作空间,然后设置。

3、窗口---首选项----content type ---JSP----设置jsp的编码

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

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

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

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

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

消除各类乱码的方法

一 系统乱码的消除方法

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

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

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

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

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

方法二:如果你找不到一台与你的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=“simsunttf”

FontPackageDecorative=“宋体”

FontPackageDontcare=“宋体”

FontPackageModern=“宋体”

FontPackageRoman=“宋体”

FontPackageScript=“宋体”

FontPackageSwiss=“宋体”

AssocSystemFont=“simsunttf”

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下的中文软件的动态链接库。这样,当你运行中文软件时就会调用英文的动态链接库,因此出现乱码。解决办法是重新安装中文软件,恢复中文动态链接库即可。

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

我们的PageCharsetjsp页面代码如下所示:

[html] view plain copy

<%@ page language="java" import="javautil"%>

<html>

<head>

<title>中文显示示例</title>

</head>

<body>

中文显示的示例。

<%

outprint("这里是用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="javautil" pageEncoding="gb2312"%>

<html>

<head>

<title>URL传递参数中英文处理示例</title>

</head>

<%

String param = requestgetParameter("param");

%>

<body>

<a href="URLCharsetjspparam='中文'">请单击这个链接</a>

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

</body>

</html>

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

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

[html] view plain copy

<span style="font-size:18px">  <Connector port="8080" protocol=">

connectionTimeout="20000"

redirectPort="8443"  /></span>

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

3、表单提交中问乱码

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

我们的提交表单的页面,FormCharsetjsp页面如下:

[html] view plain copy

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

pageEncoding="GB18030"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ">

<html>

<head>

<meta >

<title>Form中文处理示例</title>

</head>

<body>

下面是表单内容:

<form action="AcceptFormCharsetjsp" method="post">

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

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

<input type="submit" value="提交"/>

</form>

</body>

</html>

我们的AcceptFormCharsetjsp页面:

[html] view plain copy

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

pageEncoding="GB18030"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ">

<html>

<head>

<meta >

<title>Form中文处理示例</title>

</head>

<body>

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

<%

outprintln("表单输入的userName值为:" + requestgetParameter("userName") +"<br>");

outprintln("表单输入的pasword值为:" +requestgetParameter("password") + "<br>");

%>

</body>

</html>

提交表单:

结果如下:

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

[html] view plain copy

<%

String userName = requestgetParameter("userName");

String passWord = requestgetParameter("password");

outprintln("表单输入的userName值为:" +  new String(userNamegetBytes("ISO-8859-1"),"gb2312")+"<br>");

outprintln("表单输入的pasword值为:" + new String(passWordgetBytes("ISO-8859-1"),"gb2312")+"<br>");

%>

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

4、数据库 *** 作中文乱码

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

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

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

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

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

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

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

public String encoder(String str) throws UnsupportedEncodingException

{

String result = new String(strgetBytes("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模型的时候,我们在webxml中配置只需要配置好jsp页面就可以了,在model2模型中我们使用servlet作为控制器,我们就需要在Filter的配置文件webxml中配置好servlet的设置,对所有的servlet处理的表单编码进行设置。

[html] view plain copy

<filter>

<filter-name>CharsetEncodingFilter</filter-name>

<filter-class>combjpowernodedrputilfilterCharsetEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>GBK</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharsetEncodingFilter</filter-name>

<url-pattern>jsp</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>CharsetEncodingFilter</filter-name>

<url-pattern>/servlet/</url-pattern>

</filter-mapping>

数据库连接的URL中增加characterEncoding=utf-8

比如 如果是mysql数据库的话

"jdbc:mysql://localhost:3306/xxDBcharacterEncoding=utf-8"

然后再jsp文件中 增加<%@ page language="java" pageEncoding="UTF-8"%>

就没问题了

在你的jsp页面里的第一行是这么写的吗

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

如果不是就试一下~~~

如果还不好使的话就在ActionForm类里的

public void reset(ActionMapping mapping, >

以上就是关于jsp程序输出正常,写入数据库中文乱码,插入语句在数据库里没问题全部的内容,包括:jsp程序输出正常,写入数据库中文乱码,插入语句在数据库里没问题、eclipse导入JSP,中文显示乱码怎么解决、请问我的jsp网页文本框中输入中文,存到数据库中显示为乱码如何解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9645616.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存