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;
下一篇: MySQL自增主键设置的建议