MySql 编码设置

原创 2015年07月07日 11:34:21
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。

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

mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 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.00 sec)

上面列出的值就是系统的默认值。(很奇怪系统怎么默认是latin1的瑞典语排序方式)...

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


1. SET NAMES 'utf8';

它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

2. 创建数据库
mysql> create database name character set utf8;

3.
创建表
CREATE TABLE `type` (
`id` int(10) unsigned NOT NULL auto_increment,
`flag_deleted` enum('Y','N') character set utf8 NOT NULL default 'N',
`flag_type` int(5) NOT NULL default '0',
`type_name` varchar(50) character set utf8 NOT NULL default '',
PRIMARY KEY (`id`)
)  DEFAULT CHARSET=utf8;

4.
修改数据库成utf8的.
mysql> alter database name character set utf8;

5.
修改表默认用utf8.
mysql> alter table type character set utf8;

6. 修改字段用utf8
mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;

参考:http://xyfxh.spaces.live.com/Blog/cns!4EFEB1E6EFF8C824!151.entry
版权声明:本文为博主原创文章,未经博主允许不得转载。

HTML中&nbsp 和空格的区别

刚刚学写HTML代码时候,我曾碰到这样的问题:在代码里加入一连串空格,在浏览器上显示的时候,却只看到一个空格。常用的解决方法是,用" "来代替空格,一个" "相当于一个空格,多加几个" "就可以把空格...
  • you1314520me
  • you1314520me
  • 2013年09月19日 18:26
  • 44615

空格&nbsp在不同浏览器中显示距离不一致问题解决方法

  在ie、firefox、chrome浏览器上显示的效果不太一样,主要是前面的空格宽度不同。网上资料说不同的浏览器会有不同的默认字体,一般 IE默认字体都是宋体,而firefox...
  • itmyhome
  • itmyhome
  • 2014年05月27日 20:49
  • 8932

MySQL修改编码设置及乱码问题

一. 在前台连接写入的时候编码是不是与数据库编码符合二、查看MYSQL数据库的编码mys...
  • pzw_0612
  • pzw_0612
  • 2015年08月29日 15:35
  • 7897

mysql 用户管理和权限设置

用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user  zx...
  • senlin1202
  • senlin1202
  • 2016年03月04日 10:03
  • 186

PHP程序-老七汉化修正版下载PHP+MYSQL论坛 

  • 2002年10月10日 00:00
  • 205KB
  • 下载

世界上功能最强的PHP-MYSQL多房间聊天室 

  • 2002年10月10日 00:00
  • 176KB
  • 下载

Linux 下 设置mysql数据库为utf8编码的方法

  • 2014年06月08日 10:45
  • 93KB
  • 下载

JS中URL编码与.net URL解码

javascript函数的体例:     encodeURI("url地点")//编码     decodeURI("url地点")//解码   asp.net的体例: ...
  • renkangkangren
  • renkangkangren
  • 2017年06月23日 11:32
  • 99

Property属性, KVC键值编码OC…

1、属性:帮你自动生成setter 和 getter 方法      属性的声明:(写在.h中)      格式: @property 数据类型 属性名      属性的实现:(写在.m中)     ...
  • qq_31810357
  • qq_31810357
  • 2015年10月08日 09:06
  • 853

常用字符集编码详解:ASCII 、GB23…

http://www.douban.com/group/topic/6922168/   标题:常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、unicode、UTF-...
  • yihu0817
  • yihu0817
  • 2014年12月16日 20:33
  • 432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySql 编码设置
举报原因:
原因补充:

(最多只允许输入30个字)