之前的服务器上用的mysql-5.1.12一直使用latin1来存储,没有出现问题
新安装的mysql服务器使用utf8字符集,反倒无法存储中文了,特来求教。mysql版本:5.1.28
my.cnf里配置:
[mysql]
default-character-set = utf8
[mysqld]
default-character-set = utf8mysql环境下:
mysql> show variables like 'character_set%';
+--------------------------+----------------------------------------+
| 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/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+mysql> show variables like 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+ mysql连接后使用insert插入中文,select出来都为空;然后尝试在C程序中使用libmysqlclient库进行插入,插入中得到的结果是乱码;
尝试加入执行mysql_query(&m_connection, "set names utf8"), 唯一的变化就是之前的乱码变成另一种形式的乱码。
不明白为啥utf8环境下中文都无法插入,搜索了很久也没找到解决办法,盼各位赐教
新安装的mysql服务器使用utf8字符集,反倒无法存储中文了,特来求教。mysql版本:5.1.28
my.cnf里配置:
[mysql]
default-character-set = utf8
[mysqld]
default-character-set = utf8mysql环境下:
mysql> show variables like 'character_set%';
+--------------------------+----------------------------------------+
| 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/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+mysql> show variables like 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+ mysql连接后使用insert插入中文,select出来都为空;然后尝试在C程序中使用libmysqlclient库进行插入,插入中得到的结果是乱码;
尝试加入执行mysql_query(&m_connection, "set names utf8"), 唯一的变化就是之前的乱码变成另一种形式的乱码。
不明白为啥utf8环境下中文都无法插入,搜索了很久也没找到解决办法,盼各位赐教
解决方案 »
- 关于一个错误请教达人
- 请问字段名或表名可否出现/,怎么做到?
- Tomcat连接MySQL出现Query execution was interrupted错误在线等
- 如何查看mysql列长度
- mysql与access
- 请问:在MSSQL中能不能通过sql脚本来生成一个表呀,应该怎么做呀
- 求一条SQL语句。想在表中增加一个ID列。我想让它自动的增加生成,该用哪条语句?
- mysql如果是用mysql用户启动的,用root可以启动吗?需要跟什么参数?能举个例子吗?
- 如何将.dbf文件导入MYSQL?
- 查詢數據該怎麽寫
- mysql有个字段是DATETIME类型,我可以按月统计么,该怎么写sql语句?
- 请教MySQL里如何批量删除指定字符后的全部内容?
mysql>set names latin1;
然后插入:
mysql>insert into test values(1,'测试');
再select出来是正常的中文但我的数据库是utf8的,我却无法再set nams utf8的情况下插入中文呢?在set names latin1下反倒是可以,我给弄晕了...
该文件中有两处这样的配置:default-character-set=latin1
将这两处改成:default-character-set=utf8 新建数据库需指定字符集:
UTF8: CREATE DATABASE mmtye DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 在命令行查看字符集编码:show variables like '%char%'; 会看到如下信息:
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 | D:\MySQL\share\charsets\ 以上内容在重启MySql后也一直有效,无需每次启动数据库都要指定。 A、为了在命令行下能正确查看中文,命令行下执行:
set character_set_results=gbk; B、若需要在windows命令行执行insert、update,则执行:
set character_set_client=gbk;
A、B 两个命令重启数据库前有效,重启后就失效了。