Web应用中的中文问题以及数据表乱码.doc_第1页
Web应用中的中文问题以及数据表乱码.doc_第2页
Web应用中的中文问题以及数据表乱码.doc_第3页
Web应用中的中文问题以及数据表乱码.doc_第4页
Web应用中的中文问题以及数据表乱码.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、Web应用中的中文问题:Jsp页面编码: 告诉jsp引擎,在将jsp转成servlet源文件时,该jsp文件的编码是什么。相当于Servlet中的response.setContextType()。即设置相应头。浏览器会依据该编码来显示页面,保持jsp文件时,其真正的编码应该与设置的一致。Html:保存html文件时,其真正的编码应该与设置的一致。Servlet:获取请求参数时: request.setCharacterEncoding(utf-8);如果servlet要直接输出一些信息:response.setContentType(text/html;charset=utf-8);数据库:mysql 设置数据库编码:Create database servletdb(数据库名) default character set utf8; 如果数据库已经建好了,可以使用:Alter database servletdb(数据库名) default character set utf8;(修改编码)set names gbk;二、工具中修改编码方式:1、 改变 Eclipse 或者 MyEclipse 新建文件的默认编码eclipse 的:window-preferences-General-ContentType 改成 utf-8 。myEclipse 的 :window-preferences-myEclipse-files and editors-jsp encoding 设成 ISO10646/UTF-8.2、 eclipse 和java文件编码设定Window-preferences-General-Workspace Text file encoding 改为 UTF-8 。方便项目移植到linux下编写。3、 项目编码这里遇到的问题是,眼前的项目已经编写了大部分了,然而,只想接下来的新建的文件的编码是 UTF-8 ,而以前的不变。那么右键自己的项目 -Properties-Resource-Text file encoding 改为 UTF-84、 JSP 编码Window-myeclipse-Files and Editors-JSP 、 XML 都在 encoding 中调节成 UTF-8 。三、数据表里面有中文的字段中文都变成了乱码,导出数据也是乱码.数据库字符集为utf-8mysql乱码处理总结: (1)java中处理中文字符正常,在cmd client中显示乱码是字符集的问题. (2)字段长度设置够长,但插入中文字符时提示com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column错误是字符集的问题. (3)乱码问题归根到底是字符集的问题,那就从字符集设置方面考虑,不外乎下面几个方面:server,client,database,connection,results.-解决办法-(1)修改 my.ini(MySQL Server Instance Configuration 文件)# CLIENT SECTION 客户端的配置clientport=3306mysqldefault-character-set=gbk# SERVER SECTION 服务器端的配置mysqlddefault-character-set=gbk(2)修改data目录中相应数据库目录下的db.opt配置文件default-character-set=gbkdefault-collation=gbk_chinese_ci(3)数据库连接串中指定字符集URL=jdbc:mysql:/yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk 注:在mysql4.1.0版 要加useUnicode=true&characterEncoding=gbk 如果是5.0版以上的,加不加都是没有关系的!一般的我们设置为:URL=jdbc:mysql:/localhost:3306/servletdb?characterEncoding=gbk(4)在创建数据库时指定字符集create database yourDB CHARACTER SET gbk;如:create database servletdb defalut character set gbk;(5)在dos命令上要设置set names gbk使用show variables查看到你的字符集,现在我们默认的是latin1要改变服务器的编码必须重新启动服务器。SHOW VARIABLES LIKE character_set_%;改哪个设置一下才能显示出来的是正常的中文字?和字符相关的变量中这几个和sql很有关系:character_set_clientcharacter_set_connectioncharacter_set_results此外就是数据库中对相应字段设置的charact set,如果没有对字段设置,缺省是table的charact set,table也没有指定则缺省使用database的。在SQLyog下输入下面代码,全部执行 SET character_set_client = utf8; SET character_set_results = gb2312; SET character_set_connection = utf8; 假如上边的不行,还可以改成Gbk。总以根据你的数据的文字编码改成相应的编码类型就ok了。client表示客户端发送过来的字符集,results表示发送到客户端的字符集(这两个分开是因为发送过来和发送过去的不一定是同一个客户端),connection则在客户端和数据库起一个连接作用。在之前的文章里,我已经提过如何解决JSP中乱码问题(解决tomcat下中文乱码问题 ),其中也详细解说了MYSQL乱码问题,相信通过里面的办法,肯定都已经解决了JSP里的乱码问题,不过还是有些人的MYSQL乱码问题没有得到解决,包括我自己,所以又找了一些资料,希望这次能完全解决MYSQL数据库的乱码问题。第一种方法,很精辟的总结:经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:WINDOWS 下导入应该这样使用MYSQL的命令在 DOS命令下进入mysql的bin目录下,输入mysql -uroot -p密码 数据库名称 库名导入完成以后再用phpmyadmin打开看,里面的中文字就是正确的。4.从mysql4.1里导出库文件一.用phpmyadmin导出导出倒是问题不大,如果phpmyadmin的浏览页面里显示的中文是正常的,那么导出肯定也是正常的二.在linux上导出如果用mysqldump导出出现了乱码也没有关系,可以运行iconv来转换一下iconv -c -f UTF-8 -t GB2312 库文件名 新的gb2312的库文件名综上所述,你要注意:1。尽量在需要导入的库文件的开头加入SET NAMES gb2312;告诉mysql你要导入的是一个gb2312的文件;2。可能你需要这个:SET NAMES utf8;在登陆到mysql后用,把character的一些默认参数改到utf8上,有时可以减少一些困扰,不过也不是必须的。在mysql上使用:SHOW VARIABLES LIKE character_set_%;用来查看当前的状态。3.如果出现乱码也不要怕,一是你要注意留存原有的备份,二是用iconv来进行转化。在正常使用之前注意做导入导出的测试,确保万无一失。最后加一句:原创文章,转载请注明出处。呵呵邮件:作者: MySQL 发布日期: 2005-12-14我升级了MYSQL到4.1.2,phpmyadmin用的是2.6.2。数据表里面有中文的字段中文都变成了乱码,导出数据也是乱码。我用以前的2.5.7没有问题,想问一下,应该在phpmyadmin的那个文件里改哪个设置一下才能显示出来的是正常的中文字?和字符相关的变量中这几个和sql很有关系:character_set_clientcharacter_set_connectioncharacter_set_results此外就是数据库中对相应字段设置的charact set,如果没有对字段设置,缺省是table的charact set,table也没有指定则缺省使用database的。在SQLyog下输入下面代码,全部执行 SET character_set_client = utf8; SET character_set_results = gb2312; SET character_set_connection = utf8; 假如上边的不行,还可以改成Gbk。总以根据你的数据的文字编码改成相应的编码类型就ok了。给出Gbk的代码: SET character_set_client = gbK; SET character_set_results = gbK; SET character_set_connection = utf8; 但是重启SQL之后又不行了。 2.Tools-上面3个变量的作用是这样的,client表示客户端发送过来的字符集,results表示发送到客户端的字符集(这两个分开是因为发送过来和发送过去的不一定是同一个客户端),connection则在客户端和数据库起一个连接作用。具体是这样:比如我在mysql命令行设置client为gbk,connection为utf8,results为gbk,数据库为big5,当我发送一个insert语句的时候,这个语句作为gbk代码,先转为utf8代码(connection),再转为big5(database)插入数据库。而运行一个select语句的时候,从数据库得到的结果则相反的过程,由big5转为utf8,再转为gbk,你得到gbk的结果。因此最主要的是让client和results和你使用的客户端一致。比如你的网页是utf8编码,你就要设置这两个为utf8。而在mysq

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论