Java乱码问题解决方案.doc
《Java乱码问题解决方案.doc》由会员分享,可在线阅读,更多相关《Java乱码问题解决方案.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java乱码问题解决方案.txt生活是一张千疮百孔的网,它把所有激情的水都漏光了。寂寞就是你说话时没人在听,有人在听时你却没话说了!Java乱码问题解决方案Java乱码问题一直是困扰初学者的一个难题,下面就根据笔者的经验来给大家一个解决方案。我写了一个Demo的web应用,解决了乱码问题,点击下载1 问题来源 Java的乱码问题,根源在于操作系统、数据库(MySQL)、Web服务器(Tomcat)、页面(JSP)中的编码不一致造成的。例如,mysql的编码是latin1,而页面上字符的编码是GBK,则就会出现乱码问题。2 解决方案 了解了乱码产生的原因,下面就来看一下如何解决乱码。事实上,只要
2、保证各个环节的编码一致,就不会产生乱码,所以只要将所有的环节,设置的编码为UTF-8,就不会出现乱码了(为了支持国际化,建议统一设置成UTF-8)。3 mysql数据库编码的设置(以MySQL 5.0.41为例)? 查看数据库支持的编码:show character set;这样可以查看mysql数据库支持的所有编码,其中可以看到有支持utf8编码。mysql show character set ;+-+-+-+-+| Charset | Description | Default collation | Maxlen |+-+-+-+-+| big5 | Big5 Traditional
3、Chinese | big5_chinese_ci | 2 | dec8 | DEC West European | dec8_swedish_ci | 1 | cp850 | DOS West European | cp850_general_ci | 1 | hp8 | HP West European | hp8_english_ci | 1 | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | latin1 | cp1252 West European | latin1_swedish_ci | 1 | latin2 | IS
4、O 8859-2 Central European | latin2_general_ci | 1 | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | ascii | US ASCII | ascii_general_ci | 1 | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | tis620 | T
5、IS620 Thai | tis620_thai_ci | 1 | euckr | EUC-KR Korean | euckr_korean_ci | 2 | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | greek | ISO 8859-7 Greek | greek_general_ci | 1 | cp1250 | Windows Central European | cp1250_general_ci | 1 |
6、 gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | cp866 | DOS Russian | cp866_general_ci | 1 |
7、keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | macce | Mac Central European | macce_general_ci | 1 | macroman | Mac West European | macroman_general_ci | 1 | cp852 | DOS Central European | cp852_general_ci | 1 | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | cp1251 | Windows
8、Cyrillic | cp1251_general_ci | 1 | cp1256 | Windows Arabic | cp1256_general_ci | 1 | cp1257 | Windows Baltic | cp1257_general_ci | 1 | binary | Binary pseudo charset | binary | 1 | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | eucjp
9、ms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |+-+-+-+-+36 rows in set (0.00 sec)? 查看数据库默认的编码: show variables like %character%;mysql show variables like %character%;+-+-+| Variable_name | Value |+-+-+| character_set_client | latin1 | character_set_connection | latin1 | character_set_datab
10、ase | latin1 | character_set_filesystem | binary | character_set_results | latin1 | character_set_server | latin1 | character_set_system | utf8 | character_sets_dir | E:mysql-5.0.41-win32sharecharsets |+-+-+8 rows in set (0.00 sec)可以看到,mysql数据库中,此时有关字符串的设置的参数,其中“character_set_server”为创建数据库是默认的编码,现在需
11、要将其修改为utf8。? 修改数据库默认的编码:set character_set_server=utf8;mysql set character_set_server=utf8;Query OK, 0 rows affected (0.00 sec) 执行改命令后,可以看到数据库此时的默认编码改为utf8了mysql show variables like %character%;+-+-+| Variable_name | Value |+-+-+| character_set_client | latin1 | character_set_connection | latin1 | ch
12、aracter_set_database | latin1 | character_set_filesystem | binary | character_set_results | latin1 | character_set_server | utf8 | character_set_system | utf8 | character_sets_dir | E:mysql-5.0.41-win32sharecharsets |+-+-+8 rows in set (0.00 sec) 此时,创建数据库和表如果不指定字符集,则也会使用uft8的编码了。? 查看schema和table编码:s
13、how create database 数据库名; show create table 表名;例如存在这样一个数据库mydbdefault,mydbdefault中有一个表testmysql use mydbdefault;Database changedmysql show create database mydbdefault;+-+-+| Database | Create Database |+-+-+| mydbdefault | CREATE DATABASE mydbdefault /*!40100 DEFAULT CHARACTER SET latin1 */ |+-+-+1
14、row in set (0.00 sec)数据库mydbdefault的编码为latin1mysql show create table test;+-+-+| Table | Create Table |+-+-+| test | CREATE TABLE test ( id int(20) default NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1 |+-+-+1 row in set (0.00 sec)表的编码为latin1? 修改schema和table编码:alter database 数据库名 character set utf8;alt
15、er table 表名 character set utf8;既然查出数据库和表的编码都不是uft8,所以此时要将数据库和表的字符集改成utf8。mysql alter database mydbdefault character set utf8;Query OK, 1 row affected (0.00 sec) mysql show create database mydbdefault;+-+-+| Database | Create Database |+-+-+| mydbdefault | CREATE DATABASE mydbdefault /*!40100 DEFAULT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 乱码 问题解决 方案
限制150内