首先把你获取的页面的数据用DB的编码方式重新编码一下再存入DB
如String tstna=requestgetParameter("shijuanming");
改成String tstna=requestgetParameter("shijuanming");
tstna = new String(tstnagetBytes("ISO-8859-1", "GB2312"));
后面的一个编码方式,如果DB是GB2312,那就是这个,如果不是,改成DB相应的编码方式就行了
当然,把mysql 和 jsp上编码格式设置一致即可, 一般默认mysql的编码格式是UTF-8, 建议在jsp中也设置为UTF-8, 如果你不想这么做的话要改数据库格式, 也就是说你所有建立的表都要重新建立成GBK编码。
因为使用的编码没有统一!
比如数据库使用的UTF-8编码,而你的JSP端使用GBK编码!写入数据库的中文就会出现乱码了!
解决办法就是把编码统一就可以了,一般是在JSP页面做处理,假如你的数据库编码是UTF-8,则JSP页面加入下列代码
<%@page pageEncoding="UTF-8"%>
汉字乱码现象有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 的java代码执行之前写入在 <% responsesetContentType("text/html;charset=UTF-8")%> 一定要是之前,因为设了这个下面代码才开始生效。可以写在jsp开头。
2在在Servlet中service方法开始部分写入 responsesetContentType("text/html;charset=UTF-8")
3在过滤器中写入在Servlet中 responsesetContentType("text/html;charset=UTF-8") 一般都写在过滤器中,可以减少代码重复量
4对于提交已经编码的数据需要先解码再编码,也就是楼主的方法
new String(strgetBytes("ISO8859-1"),"UTF-8") 这种方法可以解决提交时候的问题,
new String(strgetBytes("UTF-8"),"ISO8859-1") 同样的道理解决已经编码的数据要显示到页面的时候就要反着写
还有就是项目中最好使用统一的编码包括:文件保存的时候使用的编码,jsp文件翻译时使用的编码,服务器响应编码,和提交编码,还有就是数据库的编码。
eclipse下:jsp和class文件保存时使用编码在文件右键的property选项中能找到,
jsp页面编码有两个<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
pageEncoding是设的是tomcat将jsp文件翻译成servlet程序的时候执行的翻译编码,而charset才是服务器响应编码 也就是servlet中的responsesetCharacterEncoding 一般都设置成UTF-8;
提交数据的时候也需要你那样转码,不过转码工作却实是写在过滤器里,可以写代码的减少麻烦
提交参数时候要设置request的编码,也就是你遇到的问题,按照我前四步的说明做就可以了。
JSP(全称JavaServer Pages)是由Sun Microsystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于>
数据库不是乱码,是你设置的编码问题,你用的是cmd来查看的吧,cmd查看的方式的gbk的,和你的数据库编码不一样,就会显示乱码 嗯,对呀,所以你页面显示没有问题,数据库里面存储的也没有问题,而且是用cmd执行SQL语句看到的是乱码问题,没有问题的
可能是你接收的时候么有注意编码问题,应该是action类中加入转换成中文编码的代码,比如:
responsesetCharacter("UTF-8");你试下,应该没问题的啦
以上就是关于JSP页面数据库中的中文出现乱码是怎么回事全部的内容,包括:JSP页面数据库中的中文出现乱码是怎么回事、通过Jsp往Oracle数据库中提交数据为什么汉字会出现乱码的问题、请问我的jsp网页文本框中输入中文,存到数据库中显示为乱码如何解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)