您的位置:首页 > 数据库 > MySQL

关于MYSQL在UTF-8字符集下乱码的解决办法

2014-03-30 22:45 405 查看
from http://www.itxx.com.cn/data/mysql/data_1969.html

怎样解决MYSQL数据库在UTF-8字符集下乱码?经常会有人遇到这样的问题,MYSQL数据库在UTF-8字符集下是乱码的,去网上搜了以下找到的答案都不理想,下面中国信息港就与大家分享下关于MYSQL在UTF-8字符集下乱码的解决办法的问题!

由于能直接在MYSQL数据库里添加中文数据,并且能正常显示,说明我的表都使用了正确的字符编码,经过查看后,确认了,我全部的表以及字段都使用了UTF-8的编码,但是为什么程序添加的中文数据就不行呢?

其 实,原因在于MYSQL服务器使用的默认编码,以及数据库的默认编码,很多人已经很小心的在建立表时关注表的字符编码,却忽略了数据库的字符编码,而在没 指定数据库的字符编码时,创建的数据库就使用MYSQL服务器的默认编码,但是,如果MYSQL服务器的配置文件没有指定编码时,很可能就是使用的 latin1编码.

查看服务器和数据库使用何种编码的MYSQL命令为:SHOW VARIABLES LIKE 'character_set_%'; 以及 SHOW VARIABLES LIKE 'collation_%'; 看到里面使用的编码了,我本应该使用的是utf8,所以,不是utf8的,那就说明问题在这里了.

运行命令:SHOW VARIABLES LIKE 'character_set_%'; 结果如下

'character_set_client', 'utf8'

'character_set_connection', 'utf8'

'character_set_database', 'latin1'

'character_set_filesystem', 'binary'

'character_set_results', 'utf8'

'character_set_server', 'latin1'

'character_set_system', 'utf8'

'character_sets_dir', 'D:\soft_work\mysql\share\charsets\'

果然发现有几个不对的

运行命令:SHOW VARIABLES LIKE 'collation_%'; 结果如下

'collation_connection', 'utf8_general_ci'

'collation_database', 'latin1_general_ci'

'collation_server', 'latin1_general_ci'

那怎么办呢,只要把那几个的编码改成utf8的,那应该就可以了.

1: 在Mysql的配置文件 my.ini (一般在c:/windows/下面) 里加上服务器的默认编码配置: default-character-set=utf8

2: 修 改你的数据库的字符编码:进入Mysql数据库,通过命令修改你的数据库字符编码: ALTER DATABASE `databaseName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci (修改后需要重启Mysql数据库)

3: 如果你的表以及表里的字段使用了不正确的字符编码,同样需要修正过来:命令:

修改表的编码: ALTER TABLE `tableName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

修改字段的编码: ALTER TABLE `tableName` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL

(做好了时,再跑一下上面那两个查看字符编码的命令,看看是否全部都变成了utf8)

4: 如 果还无效的话,再尝试使用这个MYSQL数据库连接字符串: jdbc:mysql://localhost:3306/xxxx?useUnicode=true&characterEncoding=UTF-8 (有时可能需要将符号(&)转码写成(&))



==============================================================

补充材料一:

==============================================================

mysql字符编码是版本4.1引入的,支持多国语言,而且一些特性已经超过了其他的数据库系统。

我们可以在MySQL Command Line Client 下输入如下命令查看mysql的字符集

mysql> SHOW CHARACTER SET;

+----------+-----------------------------+---------------------+--------+

| Charset | Description | Default collation | Maxlen |

+----------+-----------------------------+---------------------+--------+

| big5 | Big5 Traditional 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 | ISO 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 | TIS620 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 |

| 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 |

| 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 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 |

| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |

+----------+-----------------------------+---------------------+--------+

36 rows in set (0.02 sec)

更多mysql的字符集知识可以参考本论坛的
http://www.phpfans.net/bbs/viewt ... &extra=page%3D1



字 符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。

查看系统的字符集和排序方式的设定可以通过下面的两条命令:

mysql> SHOW VARIABLES LIKE 'character_set_%';

+--------------------------+-------------------------------------------+

| Variable_name | Value |

+--------------------------+-------------------------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | D:\MySQL\MySQL Server 5.0\share\charsets\ |

+--------------------------+-------------------------------------------+

8 rows in set (0.06 sec)

mysql> SHOW VARIABLES LIKE 'collation_%';

+----------------------+-------------------+

| Variable_name | Value |

+----------------------+-------------------+

| collation_connection | latin1_swedish_ci |

| collation_database | latin1_swedish_ci |

| collation_server | latin1_swedish_ci |

+----------------------+-------------------+

3 rows in set (0.02 sec)





==============================================================

补充材料二: mysql字符集编码详细说明

==============================================================

mysql字符集编码

字符集和整理

整理 描述

armscii8 (ARMSCII-8 Armenian)

armscii8_bin 亚美尼亚语, 二进制

armscii8_general_ci 亚美尼亚语, 不区分大小写

ascii (US ASCII)

ascii_bin 西欧 (多语言), 二进制

ascii_general_ci 西欧 (多语言), 不区分大小写

big5 (Big5 Traditional Chinese)

big5_bin 繁体中文, 二进制

big5_chinese_ci 繁体中文, 不区分大小写

binary (Binary pseudo charset)

binary 二进制

cp1250 (Windows Central European)

cp1250_bin 中欧 (多语言), 二进制

cp1250_croatian_ci 克罗地亚语, 不区分大小写

cp1250_czech_cs 捷克语, 区分大小写

cp1250_general_ci 中欧 (多语言), 不区分大小写

cp1251 (Windows Cyrillic)

cp1251_bin 西里尔语 (多语言), 二进制

cp1251_bulgarian_ci 保加利亚语, 不区分大小写

cp1251_general_ci 西里尔语 (多语言), 不区分大小写

cp1251_general_cs 西里尔语 (多语言), 区分大小写

cp1251_ukrainian_ci 乌克兰语, 不区分大小写

cp1256 (Windows Arabic)

cp1256_bin 阿拉伯语, 二进制

cp1256_general_ci 阿拉伯语, 不区分大小写

cp1257 (Windows Baltic)

cp1257_bin 巴拉克语 (多语言), 二进制

cp1257_general_ci 巴拉克语 (多语言), 不区分大小写

cp1257_lithuanian_ci 立陶宛语, 不区分大小写

cp850 (DOS West European)

cp850_bin 西欧 (多语言), 二进制

cp850_general_ci 西欧 (多语言), 不区分大小写

cp852 (DOS Central European)

cp852_bin 中欧 (多语言), 二进制

cp852_general_ci 中欧 (多语言), 不区分大小写

cp866 (DOS Russian)

cp866_bin 俄语, 二进制

cp866_general_ci 俄语, 不区分大小写

cp932 (SJIS for Windows Japanese)

cp932_bin 日语, 二进制

cp932_japanese_ci 日语, 不区分大小写

dec8 (DEC West European)

dec8_bin 西欧 (多语言), 二进制

dec8_swedish_ci 瑞典语, 不区分大小写

eucjpms (UJIS for Windows Japanese)

eucjpms_bin 日语, 二进制

eucjpms_japanese_ci 日语, 不区分大小写

euckr (EUC-KR Korean)

euckr_bin 朝鲜语, 二进制

euckr_korean_ci 朝鲜语, 不区分大小写

gb2312 (GB2312 Simplified Chinese)

gb2312_bin 简体中文, 二进制

gb2312_chinese_ci 简体中文, 不区分大小写

gbk (GBK Simplified Chinese)

gbk_bin 简体中文, 二进制

gbk_chinese_ci 简体中文, 不区分大小写

geostd8 (GEOSTD8 Georgian)

geostd8_bin 乔治亚语, 二进制

geostd8_general_ci 乔治亚语, 不区分大小写

greek (ISO 8859-7 Greek)

greek_bin 希腊语, 二进制

greek_general_ci 希腊语, 不区分大小写

hebrew (ISO 8859-8 Hebrew)

hebrew_bin 希伯来语, 二进制

hebrew_general_ci 希伯来语, 不区分大小写

hp8 (HP West European)

hp8_bin 西欧 (多语言), 二进制

hp8_english_ci 英语, 不区分大小写

keybcs2 (DOS Kamenicky Czech-Slovak)

keybcs2_bin 捷克斯洛伐克语, 二进制

keybcs2_general_ci 捷克斯洛伐克语, 不区分大小写

koi8r (KOI8-R Relcom Russian)

koi8r_bin 俄语, 二进制

koi8r_general_ci 俄语, 不区分大小写

koi8u (KOI8-U Ukrainian)

koi8u_bin 乌克兰语, 二进制

koi8u_general_ci 乌克兰语, 不区分大小写

latin1 (cp1252 West European)

latin1_bin 西欧 (多语言), 二进制

latin1_danish_ci 丹麦语, 不区分大小写

latin1_general_ci 西欧 (多语言), 不区分大小写

latin1_general_cs 西欧 (多语言), 区分大小写

latin1_german1_ci 德语 (字典), 不区分大小写

latin1_german2_ci 德语 (电话本), 不区分大小写

latin1_spanish_ci 西班牙语, 不区分大小写

latin1_swedish_ci 瑞典语, 不区分大小写

整理 描述

latin2 (ISO 8859-2 Central European)

latin2_bin 中欧 (多语言), 二进制

latin2_croatian_ci 克罗地亚语, 不区分大小写

latin2_czech_cs 捷克语, 区分大小写

latin2_general_ci 中欧 (多语言), 不区分大小写

latin2_hungarian_ci 匈牙利语, 不区分大小写

latin5 (ISO 8859-9 Turkish)

latin5_bin 土耳其语, 二进制

latin5_turkish_ci 土耳其语, 不区分大小写

latin7 (ISO 8859-13 Baltic)

latin7_bin 巴拉克语 (多语言), 二进制

latin7_estonian_cs 爱沙尼亚语, 区分大小写

latin7_general_ci 巴拉克语 (多语言), 不区分大小写

latin7_general_cs 巴拉克语 (多语言), 区分大小写

macce (Mac Central European)

macce_bin 中欧 (多语言), 二进制

macce_general_ci 中欧 (多语言), 不区分大小写

macroman (Mac West European)

macroman_bin 西欧 (多语言), 二进制

macroman_general_ci 西欧 (多语言), 不区分大小写

sjis (Shift-JIS Japanese)

sjis_bin 日语, 二进制

sjis_japanese_ci 日语, 不区分大小写

swe7 (7bit Swedish)

swe7_bin 瑞典语, 二进制

swe7_swedish_ci 瑞典语, 不区分大小写

tis620 (TIS620 Thai)

tis620_bin 泰语, 二进制

tis620_thai_ci 泰语, 不区分大小写

ucs2 (UCS-2 Unicode)

ucs2_bin Unicode (多语言), 二进制

ucs2_czech_ci 捷克语, 不区分大小写

ucs2_danish_ci 丹麦语, 不区分大小写

ucs2_esperanto_ci 未知, 不区分大小写

ucs2_estonian_ci 爱沙尼亚语, 不区分大小写

ucs2_general_ci Unicode (多语言), 不区分大小写

ucs2_hungarian_ci 匈牙利语, 不区分大小写

ucs2_icelandic_ci 冰岛语, 不区分大小写

ucs2_latvian_ci 拉脱维亚语, 不区分大小写

ucs2_lithuanian_ci 立陶宛语, 不区分大小写

ucs2_persian_ci 波斯语, 不区分大小写

ucs2_polish_ci 波兰语, 不区分大小写

ucs2_roman_ci 西欧, 不区分大小写

ucs2_romanian_ci 罗马尼亚语, 不区分大小写

ucs2_slovak_ci 斯洛伐克语, 不区分大小写

ucs2_slovenian_ci 斯洛文尼亚语, 不区分大小写

ucs2_spanish2_ci 传统西班牙语, 不区分大小写

ucs2_spanish_ci 西班牙语, 不区分大小写

ucs2_swedish_ci 瑞典语, 不区分大小写

ucs2_turkish_ci 土耳其语, 不区分大小写

ucs2_unicode_ci Unicode (多语言), 不区分大小写

ujis (EUC-JP Japanese)

ujis_bin 日语, 二进制

ujis_japanese_ci 日语, 不区分大小写

utf8 (UTF-8 Unicode)

utf8_bin Unicode (多语言), 二进制

utf8_czech_ci 捷克语, 不区分大小写

utf8_danish_ci 丹麦语, 不区分大小写

utf8_esperanto_ci 未知, 不区分大小写

utf8_estonian_ci 爱沙尼亚语, 不区分大小写

utf8_general_ci Unicode (多语言), 不区分大小写

utf8_hungarian_ci 匈牙利语, 不区分大小写

utf8_icelandic_ci 冰岛语, 不区分大小写

utf8_latvian_ci 拉脱维亚语, 不区分大小写

utf8_lithuanian_ci 立陶宛语, 不区分大小写

utf8_persian_ci 波斯语, 不区分大小写

utf8_polish_ci 波兰语, 不区分大小写

utf8_roman_ci 西欧, 不区分大小写

utf8_romanian_ci 罗马尼亚语, 不区分大小写

utf8_slovak_ci 斯洛伐克语, 不区分大小写

utf8_slovenian_ci 斯洛文尼亚语, 不区分大小写

utf8_spanish2_ci 传统西班牙语, 不区分大小写

utf8_spanish_ci 西班牙语, 不区分大小写

utf8_swedish_ci 瑞典语, 不区分大小写

utf8_turkish_ci 土耳其语, 不区分大小写

utf8_unicode_ci Unicode (多语言), 不区分大小写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐