C/C++ 向mysql数据库读取、写入中文的解决方法
来源:互联网 发布:腾讯云的cdn地域名 编辑:程序博客网 时间:2024/06/06 07:50
1.首先需要设置mysql服务器的字符集;
一般默认情况下是默认为latinl,你可以手动修改;
这里提供一劳永逸的方法,直接修改配置文件my.ini或者是my.conf,把[mysql]与[mysqld]下的default-character-set=latinl修改为:
default-character-set=utf8;
或者你可以每次都到mysql命令行去设定下;
这里要讲下几个相关的字符集设置项:
character_set_results=utf8; //这个是用来设置查询返回结果的字符集
character_set_client=utf8; //设置客户端的字符集
character_set_connection=utf8; //设置连接的字符集
还有其他几个最好也设置成utf8吧。
显示MYSQL字符集编码 :show variables like 'character%';
类似下面:
+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
查看表新建时的字符集:show create table xxxx
查看数据库新建时的字符集:show create database xxxx
更改表的默认字符集: alter table xxxx charset=utf8
更改数据库的默认字符集:alter database xxx charset=utf8
2.当上面都已设置好以后,基本也就可以了,大家都这么说,其实不然;
在C/C++使用API连接到mysql数据库时,需要在连接后设置字符集,调用API函数mysql_set_character_set(&m_mysql, "utf8");
到这里,你可以试下是不是能够插入中文了,还是说当有中文的时候就插不进去,没有中文就可以插进去,如果你成功了,那就不用往下看了;
如果没有就看下一步;
3.代码中的字符集转换;
首先把VC++中的sql语句从gb2312转为utf8,然后再执行,应该就可以了;
这里推荐用libiconv库进行字符集转换。
为什么还要第三步呢?我觉得是客户端传入的字符串的字符集与mysql设置的字符集不匹配,所以就出问题了;
其实在第二步的时候吧utf8改成gb2312也就可以实现了,我觉得这个时候存储是utf8格式,但是传输与显示是gb2312,这里只是我的个人见解;
望大家指正。
- C/C++ 向mysql数据库读取、写入中文的解决方法
- c++向mysql写入或读取中文
- C/C++中文件的读取和写入
- C语言中文件的读取和写入
- C语言中文件的读取和写入
- C语言中文件的读取和写入
- Ubuntu 12.04 LTS,MySQL不支持中文,C语言从数据库中读取出来的中文显示???
- JSP向MySQL数据库中写入中文字符乱码问题
- 向mysql数据库中写入中文,报错问题解决
- C语言向文件写入内容并读取显示
- 解决PHP写入、读取MYSQL数据库数据中文乱码问题
- c#excel文件的读取与写入
- C#xml文件的读取写入
- 【C++】文件的读取与写入
- 【C#】关于文件的写入与读取
- 【C++】文件的读取与写入
- php向mysql中写入中文数据的问题
- android客户端向mysql数据库插入中文乱码(解决方法)
- 解决ubuntu卸载wine不完全的问题(转)
- 几则小故事
- Oracle DBWR,LGWR,CKPT,ARCH 触发条件 总结
- JQ学习日志01
- 我在想好哥们结婚送什么礼好,各位兄弟姐们帮忙想想吧!!!!
- C/C++ 向mysql数据库读取、写入中文的解决方法
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题(二)
- 【Android】SingleTask与SingleInstance的区别
- linux下svn命令大全
- Makefile编写入门
- 百度笔试题:malloc/free与new/delete的区别
- 头文件搜索路径
- Orace ITL(Interested Transaction List) 说明
- 继续干IT的十个理由