mysql ++中文乱码问题
使用mysql++读取mysql数据库,数据表中字符集为utf8,但是读取的时候中文字符串不能够正常显示。下面是测试程序:
#include <iostream>
#include <mysql++/mysql++.h>
using namespace mysqlpp;
using namespace std ;
int main(){
try{
Connection conn(false);
conn.connect("stock","localhost","root");
Query query=conn.query("select * from stock_pool");
if(StoreQueryResult res =query.store()){
for (auto it = res.begin();it !=res.end();it++){
Row row = *it;
string str =string(row[].c_str());
cout<<str<<endl;
} }
}catch (BadQuery er){
cout<<"Error:"<<er.what()<<endl;
return -;
}catch (const BadConversion &er){
cout << "Conversion error: " << er.what() << endl <<
"\tretrieved data size: " << er.retrieved <<
", actual size: " << er.actual_size << endl;
return -;
}catch (const Exception &er){
// Catch-all for any other MySQL++ exceptions
cout << "Error: " << er.what() << endl;
return -;
}
return ;
}

可见输出有问题,但是我们的数据表字符集设置没有问题。输出创建数据表的sql语句。
show create table stock_pool ; stock_pool | CREATE TABLE `stock_pool` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`stock_id` varchar(255) NOT NULL,
`stock_name` varchar(255) NOT NULL,
`state` int(11) NOT NULL,
`can_lever` int(11) NOT NULL,
`serial` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 |
解决方案很简单,设置mysql连接参数,设置字符集为utf8,如下所示:
#include <iostream>
#include <mysql++/mysql++.h>
using namespace mysqlpp;
using namespace std ;
int main(){
try{
Connection conn(false);
conn.set_option(new mysqlpp::SetCharsetNameOption("utf8"));
conn.connect("stock","localhost","root");
Query query=conn.query("select * from stock_pool");
if(StoreQueryResult res =query.store()){
for (auto it = res.begin();it !=res.end();it++){
Row row = *it;
string str =string(row[].c_str());
cout<<str<<endl;
} }
}catch (BadQuery er){
cout<<"Error:"<<er.what()<<endl;
return -;
}catch (const BadConversion &er){
cout << "Conversion error: " << er.what() << endl <<
"\tretrieved data size: " << er.retrieved <<
", actual size: " << er.actual_size << endl;
return -;
}catch (const Exception &er){
// Catch-all for any other MySQL++ exceptions
cout << "Error: " << er.what() << endl;
return -;
}
return ;
}
运行输出:
平安银行
国农科技
陕国投A
宝钛股份
中航地产
又可以愉快的玩耍了!
mysql ++中文乱码问题的更多相关文章
- 解决springmvc+mybatis+mysql中文乱码问题【转】
这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...
- 总结--解决 mysql 中文乱码
首先分析一下导致mysql 中文乱码的原因: 1.建表时使用了latin 编码 2.连接数据库的编码没有指定 3.写入时就已经乱码(这种情况需要自己检查源数据了) 解决方法总结: 1.创建库时指定编码 ...
- Servlet、MySQL中文乱码
1.Servlet中文乱码: 在doPost或doGet方法里,加上以下两行即可: response.setContentType("text/html;charset=UTF-8" ...
- php mysql 中文乱码解决方法
本文章向码农们介绍php mysql 中文乱码解决方法,对码农们非常实用,需要的码农可以参考一下. 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行 解 ...
- windows mysql 中文乱码和中文录入提示太大错误的解决方法
今天操作mysql的时候很郁闷,因为修改默认字符集搞了半天,终于弄成了(关于如何把windows的默认字符集设置成功,可以参看另一篇博文,最终在mysql中输入show variables like ...
- MySQL编程(0) - Mysql中文乱码问题解决方案
MySQL 5.6 for Windows 解压缩版配置安装: http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html MySQL ...
- MySQL及navicat for mysql中文乱码
转载自:https://www.cnblogs.com/mufire/p/6697994.html 修改完之后记着重启mysql服务,在服务里边重启,即可生效! 全部使用utf8编码 MySQL中文乱 ...
- 通过msyql proxy链接mysql中文乱码及session问题
1.session问题 问题前提:一台机数据库为两个实例,通过不同的socket监听不同端口对外提供服务.不同的站点都访问同一个VIP不同的端口进行访问数据库. 故障现象:一旦有一个站点先用了这个vi ...
- 可遇不可求的Question之导入mysql中文乱码解决方法篇
可遇不可求的Question之导入mysql中文乱码解决方法篇 先 set names utf8;然后 source c:\1.sql ?
- PHP彻底解决mysql中文乱码
彻底解决mysql中文乱码 mysql是我们项目中非经常常使用的数据型数据库. 可是由于我们须要在数据库保存中文字符,所以经常遇到数据库乱码情况.以下就来介绍一下怎样彻底解决数据库中文乱码情况. 数据 ...
随机推荐
- reflow和repaint区别?
作者:zccst 重绘和重排之前也知道,但也没有可以详细了解他们的机制,区别,以及对性能的影响. A repaint occurs when changes are made to an elemen ...
- iptables配置vsftp访问
一.FTP服务简介 FTP服务器有两种工作模式:主动模式和被动模式.这两种方式的特点如下: (1)主动模式下: tcp, 20(20号端口用于数据传输),21(21号端口用于控制连接) (2 ...
- bundle export fail
C:\eclipse\eclipse.exe -vmargs -Dfile.encoding=utf8
- 用Eclipse 统计代码行数小技巧
今天公司SQA问我目前项目代码行数有多少,我当时就是想,以前好像写过类似的统计工具但是一时又找不到 公司网络又不能下载,所以想想eclipse是不是又类似功能,找了下没有,但突然一想有一个转弯方法:统 ...
- StreamReader 读取文本文件乱码问题
解决读取文本文件乱码问题.我采取的是读取前先判断文本文件格式. StreamReader sr = new StreamReader(fullfileName, GetFileEncodeType(f ...
- SQL清除所有数据库日志脚本
--SQL清除所有数据库日志脚本 declare @CurrentDataBaseName nvarchar(100) declare @CurrentDataBaseID nvarchar(100) ...
- zf-启动项目报错Server 127.0.0.1 has no instance named dlx 解决办法
由于百度出来的看不明白,于是我就在群里问,吴善如经理说:你这个问题我上次给李宽看过,用端口连,把instance去掉 然后我去掉之后 项目过程能够成功运行了,原来是这样
- 一个int类型引发的bug
一.引言 今天我在项目开发中,遭遇了一个莫名其妙的问题,概括加抽象后形成如下问题:在使用MyBatis的XML语句实现Dao层接口 List<Person> selectBySome(@P ...
- 丢手帕问题as3版
N个孩子围成一圈报数,报到M的退出,剩下的再从1继续报数,报到M的再退出,一直持续到只剩一个人,问剩下的是哪个? package { import flash.display.Sprite; publ ...
- PHP学习笔记-session
session 在windows中的默认保存在AppDate/Local/Temp