欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c++ ODB连接MYSQL操作中文乱码问题

程序员文章站 2022-04-21 10:26:02
...

使用ODB过程中,修改含有中文的数据表行时,会使中文呈现出乱码问题

其一,数据库连接时,需要明确指定客户端编码格式,需要与MYSQL服务器端保持一致,推荐使用utf8

auto_ptr<database> db(new odb::mysql::database(m_user, m_password, m_databaseName, m_databaseURL, m_databasePort, 0, "utf8"));

其二,修改或者读取含有中文的列时,亦需要将编码与服务端统一,此时可以使用boost.locale库实现编码格式转换,需要链接boost_locale库

一般Visual studio默认编码为GB2312,所以从Visual studio修改时: 

string source = "要写入的中文字符串";
string data = boost::locale::conv::between( source, "UTF-8", "GB2312" );

读取中文数据时:

string sourceDataFromDataBase;
string data = boost::locale::conv::between( sourceDataFromDataBase, "GB2312", "UTF-8" );
cout << "get data: " << data << endl;