mysql 编码的问题

(1)

 当使用mysql数据库时,要确定五个编码。(1)首先我们要设置数据库的编码;(2)然后确定程序中的请求和响应的编码和数据库一致;(3)连接数据库的编码和数据库一致,jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8(注意这句话一定不要写错了)(4)页面编码和数据库一致。(5)程序文件编码和数据库一致。

(2)

当以上五中都相同但还是出现插入乱码或查询乱码。你就应该考虑到mysql服务器的编码。mysql默认编码为latin1不支持中文,可以通过show variables like 'character%';查看。需要将以下几个参数的编码设为一致。本人乱码是因为character_set_server 为latin1。而其他几个编码为utf-8.在linux下可以修改my.cnf文件,默认在/etc/my.cnf,在[mysqld]后添加character-set-server
= utf8 。

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。

1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -uroot –p,之后两次输入root用户的密码),查看数据库的编码方式命令为:

 >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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8;

其中,character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;
character_set_database数据库的编码;

character_set_results结果集的编码;

character_set_server数据库服务器的编码;
character_set_system
linux可以通过 修改my.conf
windows修改my.ini
在[mysqld]后面加上:
character_set_server=utf8后面的几个语句和这个相似,本处略去。

注意 :如果插入字符包含Emoji表情,则必须在my.conf中添加如下两行(只加入以下两行,其他地方不需要改,当然要保证创建数据库和表编码为utf8mb4)

collation_server = utf8mb4_general_ci
character_set_server = utf8mb4

不然会报java.sql.SQLException:
Incorrect string value: '\xE6\x88\x91\xE7\x9A\x84...' for column 

因为Emoji表情是四个字符,而utf-8是三个字符。所以要改成utf8mb4.

也可以通过命令方式
set character_set_server=utf8 注意是utf8 不是utf-8,后面的几个语句和这个相似,本处略去。

只要保证以上6个采用的编码方式一样,就不会出现乱码问题,如下图。

另一个查看数据库编码的命令:

>show variables like ‘collation%’;

时间: 2024-11-09 00:20:34

mysql 编码的问题的相关文章

utf-8-跪求各位大神解答!!ubuntu下mysql编码改为utf8之后中文还是乱码

问题描述 跪求各位大神解答!!ubuntu下mysql编码改为utf8之后中文还是乱码 大神们请莫先喷我为何要问这种幼稚问题TAT 情况如下: ubuntu14.04下安装mysql5.5(最简单的安装方法:apt-get install...) 考虑到mysql默认编码为latin,会出现中文乱码,所以按照网上的方法修改了 my.cnf 如下: 之后重启mysql,查看了编码 本以为一切搞定,事与愿违,我试了试插入中文的字段,结果乱码 在workbench中也是这样 apply之前: appl

ext+servlet+mysql编码问题!!彻底崩了

问题描述 ext+servlet+mysql编码问题!!彻底崩了 ext+servlet+mysql 的一个管理系统 现在情况是 1. 用户登录到jsp 在文本框输入的参数, a = Ext.getCmp("XXX").getValue()获取不到 a永远为空"" (getCmp("XXX")成功,获取到了该组件,只是getValue为空) 2. 前台直接设置var a = "哈哈" 后台用b =getParameter(&q

数据库-mac下新版mysql编码方式修改

问题描述 mac下新版mysql编码方式修改 看了网上很多的教程,说在[client]标签和[mysqld]标签后加入内容(如下图),但是我加上后数据库启动是可以,就是不能插入语句了. 想问大神有没有完整的教程.!!! 解决方案 解决方案二: 修改mysql中的编码方式Mysql编码方式修改osx下修改mysql编码方式

关于MySQL编码问题的经验总结

以下所描述无理论依据,纯属经验谈. MySQL使用4.1以上版本,管他是什么字符集,一律使用默认.不用去设置MySQL. 然后举个使用GB2312和UTF-8的例子. 好,你只要保证你的写着INSERT SQL语句的PHP文件编码为GB2312,恭喜你,你使用写着SELECT SQL语 句的GB2312编码的PHP文件读取出来的数据也是GB2312的. 同理,只要你插入数据库的PHP文件是UTF-8编码,那么你录入的就是UTF-8的,读取出来同样使用编码为 UTF-8的读取. 如果我录入为GB2

mysql编码怎么设置步骤?

  mysql的默认编码是拉丁,每次JSP制作网页用insert语句插入数据库时汉字都会显示成问号,安装mysql后,启动服务并登陆,使用show variables命令可查看mysql数据库的默认编码: 由上图可见database和server的字符集使用了latin1编码方式,不支持中文,即存储中文时会出现乱码.以下是命令行修改为utf-8编码的过程,以支持中文. (1)关闭mysql服务 [plain] view plaincopy service mysql stop (2)修改 /et

查询mysql编码以及解决mysql乱码问题

mysql出现的乱码问题是非常头疼的,有时可能出现在控制台,有时可能是服务方面的. MySQL对于字符集的指定可以细化到一个数据库,一张表,一列.传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置. (mysql安装时,特别是使用集成环境:比如appserver wampserver等如果不设置密码,打开控制台直接按enter键进入.) 第一:如何查询mysql的编码: 使用命令语句: mysql> SHOW VARIABLES LIKE 'character%';

fedora 中设置mysql编码

我的操作系统是fedora 20,安装MySQL 时安装的是MariaDB 最初查看数据库编码时,结果如下: MariaDB [passwd3]> show variables like 'character\_set\_%'; +--------------------------+--------+ | Variable_name            | Value  | +--------------------------+--------+ | character_set_clien

mysql 编码 汉字识别-mysql中编码的问题,汉字识别问题。

问题描述 mysql中编码的问题,汉字识别问题. 为什么我用heidimysql图形化窗口写代码时候,输入汉字可以识别,但是用控制台命令行写的时候,却报错.我知道这是编码问题.我也知道解决方案.但是谁能告诉我为什么图形化窗口能识别,但是控制台不能识别. 另外,为什么我执行 set names gbk 和gb2312 指令都解决了这个问题,但是utf8还是不能识别,这几个编码在汉字识别上有什么区别. 学生新手求大神指点,在线等. 解决方案 因为控制台里的命令不支持汉字,建议你用navicat fo

Wamp配置mysql编码

      因为之前做.net的时候,玩了玩儿PHP,所以用的wamp server 一直在,后来做java项目,也就一直用着上面的mysql.       但是中间出现过好几次乱码,额,今天又改了改wamp的mysql配置:       1,client:               这里 设置的是Wamp客户端的编码.      2,mysql:                这是配置在客户端输入时的编码           3,mysqld:                       这