c ODB連線MYSQL操作中文亂碼問題

2021-10-24 20:40:32 字數 726 閱讀 7844

使用odb過程中,修改含有中文的資料表行時,會使中文呈現出亂碼問題

其一,資料庫連線時,需要明確指定客戶端編碼格式,需要與mysql伺服器端保持一致,推薦使用utf8

auto_ptrdb(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連線操作 MySQL內連線操作

筆記 實現內連線 以運算元據庫tb train cpp2和tb train cpp22為例 desc tb train cpp2 desc tb train cpp22 資料表tb train cpp2中的字段country與tb train cpp22中的字段cname對應 可實現內連線 sele...

mysql連線操作 mysql中的連線操作

1.交叉連線 交叉連線不帶where子句,會返回被連線的兩個表的笛卡爾積,返回結果的行數等於兩個錶行數的乘積。2.內連線 內連線合併具有同一列的兩個以上的表的行,結果集中不包含乙個表與另乙個表不匹配的行。語法 select from 表1 inner join 表2 on 表1.列名 條件運算子 表...

VC連線MySql操作

1.在stdafx.h中匯入 import c program files common files system ado msado15.dll no namespace rename eof adoeof 2.在 initinstance 中初始化 server localhost databa...