mysql++

liooi 2009-11-19 03:02:00
使用mysql++,查询字段包含中文结果是乱码。。。
原例子:
mysqlpp::Connection conn(false);
if (conn.connect(db, server, user, pass))
{
mysqlpp::Query query = conn.query("select * from Test");
mysqlpp::StoreQueryResult res = query.store();
if (res) {
for (size_t i = 0; i < res.num_rows(); ++i)
{
cout << setw(30) << res[i]["item"] ;
}
...


请问高手如何解决.

http://topic.csdn.net/u/20080427/10/6f29ef26-8d22-477f-b956-40d68bc66a44.html
相似问题,没说如何解决...
...全文
411 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongxchen 2010-01-03
  • 打赏
  • 举报
回复
安装MySQL时选择字符集了吗?
liooi 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 endcorps 的回复:]
mysqlpp::Connection con(false);

con.set_option(new mysqlpp::SetCharsetNameOption("gbk"));

mysqlpp::SetCharsetNameOption opt = new mysqlpp::SetCharsetNameOption("gbk");

con.set_option(opt);

[/Quote]
不行啊...
被这问题快烦死了,刚用mysql代码直接查询没用set names gbk也没有乱码
mysql++代码选项设置了还是不行, utf-8 unicode都试过了。
hongxchen 2009-11-19
  • 打赏
  • 举报
回复
mysqlpp::Connection con(false);

con.set_option(new mysqlpp::SetCharsetNameOption("gbk"));

mysqlpp::SetCharsetNameOption opt = new mysqlpp::SetCharsetNameOption("gbk");

con.set_option(opt);
liooi 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chris17chen 的回复:]
需要注意的编码地方:表和字段的编码;客户端连接的编码。

你可以把看查询结果的二进制表示,比如你字段的数据是'二', 如果查询结果的二进制是0xE4 0xBA 0x8C,那么就是utf8编码。
[/Quote]
表 字段统一都改成gbk格式
插入用query.exec("set names gbk");
query.exec(sqlstr);
mysql query browser中看中文正常

查询出来,用了你那条语句,还是乱码... 晕
疾似云流 2009-11-19
  • 打赏
  • 举报
回复
需要注意的编码地方:表和字段的编码;客户端连接的编码。

你可以把看查询结果的二进制表示,比如你字段的数据是'二', 如果查询结果的二进制是0xE4 0xBA 0x8C,那么就是utf8编码。
liooi 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chris17chen 的回复:]
我出了一身冷汗……

using namespace mysqlpp;
con.set_option(new SetCharsetNameOption("gbk"));

or

using mysqlpp::SetCharsetNameOption;
con.set_option(new SetCharsetNameOption("gbk"));

or

con.set_option(new mysqlpp::SetCharsetNameOption("gbk"));
[/Quote]
... 不知道为什么还是乱码 - -!
疾似云流 2009-11-19
  • 打赏
  • 举报
回复
关于mysql的中文乱码,这篇博客可能会有帮助。

http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
liooi 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jackyjkchen 的回复:]
把编码统一,要么GBK,要么UTF8,开源软件一般用UTF8,微软的用GBK
[/Quote]
之前插入中文
query.exec("set names gbk");
query.exec(sqlstr);
可以

但现在查询如上操作就不行了...
疾似云流 2009-11-19
  • 打赏
  • 举报
回复
我出了一身冷汗……

using namespace mysqlpp;
con.set_option(new SetCharsetNameOption("gbk"));

or

using mysqlpp::SetCharsetNameOption;
con.set_option(new SetCharsetNameOption("gbk"));

or

con.set_option(new mysqlpp::SetCharsetNameOption("gbk"));
liooi 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chris17chen 的回复:]
con.set_option(new SetCharsetNameOption("gbk"));
[/Quote]
你好,用了你所说的:
error C2061: 语法错误 : 标识符“SetCharsetNameOption”

jackyjkchen 2009-11-19
  • 打赏
  • 举报
回复
把编码统一,要么GBK,要么UTF8,开源软件一般用UTF8,微软的用GBK
疾似云流 2009-11-19
  • 打赏
  • 举报
回复
con.set_option(new SetCharsetNameOption("gbk"));

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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