关于MYSQL在UTF8字符集下乱码的解决办法

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 (多语言),  不区分大小写

</article>

Tags:

  • J2ME在Windows下读取本地的UTF8文本文件出乱码的解决办法

    昨天做一个电子书小软件时,在Windows下把转成UTF-8编码的带中文的文本文件打包到.jar包里进行读取的时候,在模拟上没出乱码,但在真机上却在每行换行时出现了一个小矩形框的乱码显示,开始以为是没有处理换行符"/n",仔细再查看代码,换行符已经处理过了,后来实在不知道问题出在哪,只能做了一个只有两个中文字的UTF-8编码的文本进行读取 ...

  • TOAD FOR MYSQL 进行数据插入时乱码的解决办法MariaDB 5.5

    最近使用mysql是发现插入的数据乱码,几经周折终于找到的解决方法,特作备忘. 开始有将mysql的字符集全部设置成utf8,如下: SHOW VARIABLES LIKE 'character_set_%'; -- character_set_client utf8character_set_connection utf8character_set_dat ...

  • Mysql基础之字符集与乱码

    [图片上传失败...(image-ae6d01-1517820056535)]

    原文: Mysql基础之字符集与乱码 Mysql的字符集设置非常灵活 可以设置服务器默认字符集 数据库默认字符集 表默认字符集 列字符集 如果某一个级别没有指定字符集,则继承上一级. 以表声明utf8为例: 存储的数据在表中,最终是utf8; 1:告诉服务器,我给你发送的数据是什么编码的? character_set_client 2:告诉转换器,转换成 ...

  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    这篇文章主要介绍了MYSQL数据库使用UTF-8中文编码乱码的解决办法,需要的朋友可以参考下1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将"整理"设置为:"utf8_general_ci" 或执行语句: 代码如下:CREATE DATABASE dbname DEFAULT CHARACTER ...

  • MySQL数据库中文乱码的解决办法

    MySQL数据库中文乱码的解决办法 MySQL的字符集和校对规则有4个级别的默认设置:服务器级.数据库级.表级和连接级.我们解决中文乱码的方法就顺着这几个级别来分别设置.比较常见的是由于没有设置连接级的字符集导致的乱码. 1.服务器级字符集 服务器级也就是当服务器启动时根据配置文件中的字符集来加载.当前的服务器字符集和校对规则可以用作character_se ...

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容