MySQL不乱码的思想:建议中英文环境选择utf8
Linux系统服务端
[root@shnne 3306]# cat /etc/sysconfig/i18n
LANG=en_US.UTF-8
#LANG="zh_CN.GB2312"
SYSFONT=latarcyrheb-sun16
[root@shnne 3306]# . /etc/sysconfig/i18n
[root@shnne 3306]# echo $LANG
en_US.UTF-8
提示:Linux客户端也要更改为对应的字符集,例如:SecureCRT
MySQL数据库的客户端字符集
法1:
[root@shnne 3306]# mysql -uroot -p123456
mysql> set names utf8
法2
[root@shnne 3306]# mysql -uroot -p123456 --default-character-set=utf8
永久生效修改
更改my.cnf客户端模块参数,可以实现set names utf8的效果,并且永久生效
[client]
default-character-set=utf8
提示:无需重启,退出重新登录生效
MySQL服务端
更改my.cnf的参数
[mysqld]
default-character-set=utf8 #适合5.1及以前的版本
character-set-server=utf8 #适合5.5
MySQL的数据库中建库建表
指定字符集建库:
mysql> create database shnne DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> show create database shnne\G;
*************************** 1. row ***************************
Database: shnne
Create Database: CREATE DATABASE `shnne` /*!40100 DEFAULT CHARACTER SET utf8 */
1 row in set (0.00 sec)
ERROR:
No query specified
提示:建库的字符集是随着mysql数据库默认生成的,如果已经设置了utf8字符集,建库的时候就可以不加指定字符集参数了。
指定字符集建表:
mysql> use shnne;
Database changed
mysql> create table student(
-> id int(4) not null auto_increment,
-> name char(10) not null,
-> primary key(id),
-> key index_name(name)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> show create table student\G;
*************************** 1. row ***************************
Table: student
Create Table: CREATE TABLE `student` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(10) NOT NULL,
PRIMARY KEY (`id`),
KEY `index_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ERROR:
No query specified
开发程序的字符集
用简体 UTF8
<< 上一篇
下一篇 >>
网友留言(0 条)