一、读取中文乱码的问题
明明已经设置了所有编码为utf-8了,可是还是乱码?可能是版本问题!
可以用show variables like 'char%' 来查询。
mysql> show variables like 'char%';
+--------------------------+----------------
| Variable_name | Value
+--------------------------+----------------
| character_set_client | gbk
| character_set_connection | gbk
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | gbk
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | C:/Program File
+--------------------------+----------------
8 rows in set (0.00 sec)
然后再程序中读取的时候中文总是乱码。网上各种方法试用过了。
mysql_init(&m_connMysql);
mysql_set_character_set(&m_connMysql, "gbk"); //gbk utf8
原因:
1.server本身设定问题,例如还停留在latin1版本;
2.table的语系设定问题(包含character与collation);
3.客户端程式(例如php,java)的连线语系设定问题;
二、char与varchar的区别和使用场合
在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型。
myisam 存储引擎 建议使用固定长度,数据列代替可变长度的数据列。
memory存储引擎 目前都使用固定数据行存储,因此无论使用char varchar列都没关系,
innodb 存储引擎 建意使用varchar 类型
三、mysql下如何执行sql脚本
连接mysql:
在命令行下输入 mysql -h localhost -u root -p回车,然后输入密码即可;或直接运行mysql自带的连接工具,然后输入密码即可.
1.编写sql脚本,假设内容如下:
create database testsql;
use testsql;
create table sql (name varchar(20));
保存脚本文件,假设我把它保存在F盘的data目录下,于是该文件的路径为:F:\data\sql.sql
2.执行sql脚本,可以有2种方法:
第一种方法:
在命令行下(未连接数据库)输入 mysql -h localhost -u root -p123456 < F:\data\sql.sql (路径不加引号) 回车即可.
第二种方法:
在命令行下(已连接数据库,此时的提示符为 mysql> ),输入 source F:\data\sql.sql (注意路径不用加引号的)
或者 \.F:\data\sql.sql (注意路径不用加引号的) 回车即可。
四、MYSQL创建utf-8格式的数据库
GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;