您好,登錄后才能下訂單哦!
這篇文章主要介紹c語言連接mysql中文亂碼怎么辦,文中示例介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
1. 先上圖一張,看看什么是亂碼
2. 理解一下VC++中的字符串編碼
在以前VC++6.0中默認的字符集是多字節(jié)字符集(MBCS:Multi-Byte Character Set),而VS2005及以后默認的字符集是Unicode,這樣導致以前在VC6.0中非常簡單實用的各類字符操作和函數(shù)在VS2010環(huán)境下運行時會報各種各樣的錯誤。
字符集可以通過項目屬性修改:項目屬性→配置屬性→常規(guī)→字符集。我的字符集(VS2013編碼環(huán)境)為:
注:CString在Unicode和多字節(jié)字符集下的區(qū)別:
CString 是基于 TCHAR 數(shù)據(jù)類型的。如果為程序的生成定義了符號 _UNICODE,則會將 TCHAR 定義為 wchar_t 類型(一個 16 位的字符編碼類型);否則,會將它定義為 char(普通的 8 位字符編碼)。于是,在 Unicode 下,CString 由 16 位字符組成。如果沒有 Unicode,它們則由 char 類型的字符組成。
3. 解決辦法
在C程序里向數(shù)據(jù)庫插入數(shù)據(jù)之前,應該加上這一句:
char * query = "set names \'GBK\'"; mysql_query(con, query);
4. 為什么會出現(xiàn)亂碼?
在控制臺登錄mysql后輸入查詢語句:
Show variables like 'character%';
character_set_client:客戶端的字符集
character_set_results:結(jié)果字符集
character_set_connection: 連接字符集
這三個系統(tǒng)參數(shù)的作用:
信息輸入路徑: client→connection→server
信息輸出路徑: server→connection→results
故這幾個系統(tǒng)參數(shù)的值須相同,不然以不同的編碼方式傳送數(shù)據(jù),若編碼方式不兼容,則容易造成亂碼的問題。
以上是c語言連接mysql中文亂碼怎么辦的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。