MySQL 高清无码

使用mysql的时候,总是遇到码怎么办,一堆乱码让人下身疼痛。本文深入浅出的告诉你,如何解决mysql的乱码问题。

零、用什么编码?
编码用很多种,中文最常用的是gb2312,gbk(gb2312的超集),utf8。
为了做到i18n(internationalization),几乎所有的网站都开始转向utf8,它几乎能处理任何字符语言,所以为了达到统一,建议系统从内到外,完全使用utf8编码。

一、为什么mysql总乱码?mysql的语言编码设计
mysql 默认编码不是utf8,而是latin1编码的瑞典字符集,因为最初的作者是瑞典人。

mysql 有4个编码级别,
1. system 系统级
2. database 数据库级
3. table 表级
4. colomn 字段级,列级

有两种手段设置编码,一种是利用系统的默认设置,建表建库的时候不指定就使用,一种是在建立库和表的时候指定编码。
可以通过:
SET NAMES utf8
令后续的不论建立库还是表都默认使用utf8编码。

1. 系统级设置
/etc/mysql/my.cnf

[client]
default-character-set=’utf8′

[mysqld]
init_connect = ‘SET NAMES utf8′

然后重启mysqld服务
sudo rc.d restart mysqld

2.数据库级
create database dbname default character set utf8;

create database dbname default charset=utf8;

3.表级
create table tablename (colomn1 type1, … colomnN typeN) default character set utf8;

create table tablename (colomn1 type1, … colomnN typeN) default charset=utf8;

4.字段级
create table tablename (colomn1 varchar(20) character set utf8);

二、如何查看当前编码?
> show variables like ‘character%’;
+————————–+—————————-+
| 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 | /usr/share/mysql/charsets/ |
+————————–+—————————-+
排序用什么编码?
> show variables like ‘collation%’;
+———————-+—————–+
| Variable_name | Value |
+———————-+—————–+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+———————-+—————–+

三、如何转换已有数据库的编码?(我原来的编码是latin1,现在如何转到utf8)
转换的过程分三步

1. 导出latin1编码的数据库
2. 用iconv把编码换成utf8
3. 修改数据库文件里的编码,然后导回去

mysqldump -u user -p password dbname > dbname.sql
iconv -f latin1 -t utf8 dbname.sql > dbname1.sql
mysql -u user -p password dbname < dbname1.sql

 

四、如何在命令行里正确操纵数据库?
有如下几项要设置:
0. 首先自己要有zh_CN.utf8
apt-get install locales-all
1. 保证自己的终端没有问题
export LANG=”zh_CN.utf8″;
2. 在数据库里设置语言
mysql -uuser -ppassword
> set names utf8
然后就可以用中文进行任意的数据库操作了

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>