问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql数据库在安装时默认的字符集编码为utf8但是为什么向数据库插入中文出现乱码,

发布网友 发布时间:2022-04-07 18:41

我来回答

4个回答

热心网友 时间:2022-04-07 20:11

MYSQL 字符集问题

MySQL的字符集支持(Character Set Support)有两个方面:

字符集(Character set)和排序方式(Collation)。

对于字符集的支持细化到四个层次:

服务器(server),数据库(database),数据表(table)和连接(connection)。

1.MySQL默认字符集

MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。

但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢? (1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;

(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;

(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;

(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;

(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;

(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;

(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;

简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。

2.查看默认字符集(默认情况下,mysql的字符集是latin1(ISO_8859_1)

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

mysql> SHOW VARIABLES LIKE 'character%';

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

| 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-5.0.37"share"charsets" |

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

mysql> SHOW VARIABLES LIKE 'collation_%';

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

| Variable_name | Value |

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

| collation_connection | utf8_general_ci |

| collation_database | utf8_general_ci |

| collation_server | utf8_general_ci |

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

3.修改默认字符集

(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,

如 default-character-set = utf8

character_set_server = utf8

修改完后,重启mysql的服务,service mysql restart

使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8

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

| Variable_name | Value |

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

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | D:"mysql-5.0.37"share"charsets" |

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

(2) 还有一种修改字符集的方法,就是使用mysql的命令

mysql> SET character_set_client = utf8 ;

mysql> SET character_set_connection = utf8 ;

mysql> SET character_set_database = utf8 ;

mysql> SET character_set_results = utf8 ;

mysql> SET character_set_server = utf8 ;

mysql> SET collation_connection = utf8 ;

mysql> SET collation_database = utf8 ;

mysql> SET collation_server = utf8 ;

一般就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:

SET NAMES 'utf8';它相当于下面的三句指令:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

总结:

因此,使用什么数据库版本,不管是3.x,还是4.0.x还是4.1.x,其实对我们来说不重要,重要的有二:

1) 正确的设定数据库编码.MySQL4.0以下版本的字符集总是默认ISO8859-1,MySQL4.1在安装的时候会让你选择。如果你准备使用UTF- 8,那么在创建数据库的时候就要指定好UTF-8(创建好以后也可以改,4.1以上版本还可以单独指定表的字符集)

2) 正确的设定数据库connection编码.设置好数据库的编码后,在连接数据库时候,应该指定connection的编码,比如使用jdbc连接时,指定连接为utf8方式.

总结:你的字符集假如是gbk 就改gbk 这应该与你的web project中的所用的字符集一致 utf-8只是举例用的 要支持中文建议用gbk(繁简) gb2312(简)

热心网友 时间:2022-04-07 21:29

建数据库的时候选择正确的字符集,还有,程序里最好做必要的转码

热心网友 时间:2022-04-07 23:03

重新配置下,选第二个“日本”的那个字符编码
还有数据库连接的ur改下con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=fang&useUnicode=true&characterEncoding=UTF-8");后面的useUnicode=true&characterEncoding=UTF-8一定要加上
再试试看咯!

热心网友 时间:2022-04-08 00:55

因为utf8就是容易出现乱码。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 九尾扣字机 华为watch2可以独立接和短信吗 支持荣耀,magic4好吗? 笔记本电脑怎么切换输入法 荣耀magic4有几种颜色的啊? 荣耀magic4有遥控器功能吗 荣耀magic4手机好吗? 荣耀新品magic4怎么样? 荣耀magic4手机怎么样? 荣耀magic4怎么样 怎样查看红米note3屏幕厂家信息 荣耀magic4参数配置 荣耀的magic4手机咋样? 怎么查看小米6屏幕厂商 去共享汽车上班,有前途么 为什么运维人员的待遇往往比开发人员要低 共享汽车运维员需要交200块钱的就业协议吗 贵阳面试共享汽车驾驶员工作怎么样 交了200的块钱 签了人力资源服务协议共享汽车驾驶员工作靠谱吗 共享汽车怎么维护?能走多少里程? 烽鸟共享汽车的运维小哥还招人吗? 为什么黑界扣字用讯飞输入法 喜羊羊被灰太狼吃了后会怎样? 说自己是九尾狐狸是不是骂人 喜羊羊被灰太狼打过吗 我学扣字的想问一下有什么快的输入法除了搜狗,百度。 手机外接键盘是不是在扣字时,需要手机上安装指定的某个来解释一下?输入法才能扣字?搜狗输入法可以吗? 灰太狼被喜羊羊他们哪集整的最惨 滚刀骂人该用什么输入法 九尾扣字下载 那几集喜羊羊被灰太狼抓住啊? 喜羊羊被灰太狼捆绑的图片 美颜相机拍摄的视频下载到本地画音不同步怎么办?经常这样的 喜羊羊与灰太狼谁厉害? 三七花和三七粉的区别有哪些? 为什么人们都希望喜羊羊被灰太狼吃掉? 在《喜羊羊与灰太狼》中,战斗力最强的角色都有谁? 喜羊羊与灰太狼中,为什么灰太狼总是抓不到羊? 中药三七花和三七粉的作用一样吗?用于治疗高血压能行吗? 我在优酷上下了个电影,在那个文件夹中找到? 红角不怕远征难,万水千山只等闲,这句话运用了什么修辞手法?急急急急!