第一步:查找mysql的字符:
mysql> show variables like '%char%';
+--------------------------+----------------------------------+
| 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 | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set
我们需要修改标黑的两项,方法如下:
安装完成后也可以运行设置向导的。
X:\%path%\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe
可以修改:character_set_server 字符
MySQL数据库字符编码全局设置;可在Navicat for MySQL查询中执行下面语句修改
语句:ALTER DATABASE `数据库名` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
可以修改:character_set_database 字符
2、MySQL数据表字符编码设置;可在Navicat for MySQL查询中执行下面语句修改
语句:ALTER TABLE `表名` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
3、MySQL数据表字段字符编码设置;(也可在phpmyadmin或Navicat for MySQL中修改)
语句:ALTER TABLE `表名` CHANGE `字段名` `字段名` 字段类型(长度) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL
注意:请在执行查询之前,执行:SET NAMES gbk
改完后重启mysql服务,有必要的话重新导入表结构。
在php中查询前先设置:mysql_query("SET NAMES gbk");否则网页还是出现乱码
导入表的方法,(mysqldump用法见前博文):
导出表结构
mysqldump -hlocalhost -uroot -p123456 --default-character-set=gbk -d student_info > createdb.sql
导出表数据
mysqldump -hlocalhost -uroot -p123456 --quick --no-create-info --extended-insert --default-character-set=gb2312 student_info > data.sql
当mysql使用mysqldump导出数据出错 时的方法:
今天使用mysql的mysqldump进行数据的导出,可是进入mysql后,老是出错,提示为You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql> mysqldump -uroot -ppsw onebase > bak.sql' at line 1 一直百思不得其解,意思就是sql语句中包含mysql的内置关键字,看的一头雾水,百度一下,发现原来是使用mysql command line client cmd直接进入后,会于mysqldump.exe冲突,所以,要用CMD到mysql的安装路径的bin目录下,例如:xxxx\bin>mysqldump -u a 用户 -p密码database > 文件路径xx.sql ok,可以数据导出了。。 |