求解:Mysql使用utf8字符集插入中文乱码

zhuxiuming 2008-10-30 04:03:14
之前的服务器上用的mysql-5.1.12一直使用latin1来存储,没有出现问题
新安装的mysql服务器使用utf8字符集,反倒无法存储中文了,特来求教。

mysql版本:5.1.28
my.cnf里配置:
[mysql]
default-character-set = utf8
[mysqld]
default-character-set = utf8

mysql环境下:
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环境下中文都无法插入,搜索了很久也没找到解决办法,盼各位赐教

...全文
2031 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kebikakaxi 2012-08-27
  • 打赏
  • 举报
回复
是不是版本的原因?我用的也是是5.1
NoTargetException 2012-03-14
  • 打赏
  • 举报
回复
还真搞不懂!!希望能尽快解决这个问题!
Jeeno_ 2011-11-01
  • 打赏
  • 举报
回复
我也遇到了同样的问题。还没看到给力的解答
www1862 2010-03-02
  • 打赏
  • 举报
回复
楼上的只针对gbk吧?现在就是怎么用utf8的问题。
jeffil 2009-01-14
  • 打赏
  • 举报
回复
这里已经给出了答案的线索

在我的实践中,

执行Mysql Server Instance Config Wizard设置中的选择默认字符集页面中选择Manual Selected Default Character Set/Collation,设定为GBK

数据库的default character set gbk

连接时SET NAMES 'GBK'

再用mysql++操作就可以正常实现中文输入输出了。
aguo2006 2008-10-31
  • 打赏
  • 举报
回复
我用Mysql++ 接口也有此问题。 顶!!
zhuxiuming 2008-10-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shangxuan 的回复:]
我觉得是因为C程序用的字符串不是UTF8编码的
[/Quote]
可是直接用mysql连接上去插入中文也不行;

刚发现,如果先执行
mysql>set names latin1;
然后插入:
mysql>insert into test values(1,'测试');
再select出来是正常的中文

但我的数据库是utf8的,我却无法再set nams utf8的情况下插入中文呢?在set names latin1下反倒是可以,我给弄晕了...
shangxuan 2008-10-30
  • 打赏
  • 举报
回复
我觉得是因为C程序用的字符串不是UTF8编码的

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧