日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

c/c++操作mysql数据库使用utf8总结

發布時間:2024/2/28 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c/c++操作mysql数据库使用utf8总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡言

1. 現在編程時為了統一中英文,各國語言版本兼容性,我們都使用utf8格式存儲字符串

2. mysql保存字符數據時若出現了亂碼,例如中文亂碼,可以確定是字符集的問題,建議統一改為utf8

3.?c/c++語言操作mysql時,使用utf8編碼也有很多注意要點,這里筆者做個簡單的總結,避免大家踩坑

?

?

三個步驟

1. 確保mysql數據庫是utf8格式,數據庫的表也是utf8格式

2. 連接數據庫時,調用函數,明確設置utf8字符集

3. 確保內存中的字符串是utf8編碼格式

?

詳細

1. 確保mysql數據庫是utf8格式,數據庫的表也是utf8格式

可以通過命令查看數據庫的格式和數據庫表的格式,如下:

使用命令 show create database xxxx; 來查看數據庫的編碼格式

使用命令 show create table xxxx; 來查看數據庫表的編碼格式

具體修改為utf8的辦法可以使用mysql連接的編輯器來設置,也可以通過命令行來設置,筆者是使用HeidiSQL來設置的,簡單

2. 連接數據庫時,明確設置utf8字符集

?方法比較簡單,就是調用幾個函數,例如mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "utf8"),?mysql_set_character_set(mysql, "utf8")之類,具體的可以參考這篇博客?

https://blog.csdn.net/yzf279533105/article/details/103938260

3. 確保內存中的字符串是utf8編碼格式

辦法如下:以一個漢字為例,比如“嚴”,查到它的unicode編碼為0x4E25, 再手動轉為utf8編碼,三個字節即

1110 0100 ?? 1011 1000 ?? 1010 0101? 這里我用紅色標出了實際的位信息,前面紫色的是utf占位符

第一個字節轉數字即228,第二個字節轉數字即184,第三個字節轉數字即165

我們把字符串“嚴”逐個字節打印出來即可

代碼如下:

#include <stdio.h> #include <iostream> using namespace std;int main() {char str[10] = "嚴";printf("%u \n", (unsigned char)str[0]);printf("%u \n", (unsigned char)str[1]);printf("%u \n", (unsigned char)str[2]);printf("%u \n", (unsigned char)str[3]);printf("%u \n", (unsigned char)str[4]);getchar();return 0; }

打印結果如下圖(可以看到前三個字節分別是228, 184, 165):

注意:在windows下如果是VisualStudio系列的編輯器,默認是GB2312的編碼,必須改成utf8編碼后才可以

?

當然,你也可以更換其他漢字,只是需先查到該漢字的unicode編碼,然后手動轉成utf8編碼格式

可以到這個網站查所有漢字的unicode編碼

http://www.mytju.com/classcode/tools/encode_gb2312.asp

可以看到“嚴”字的unicode是4E25,如下圖

?

另外,如果你不會把unicode編碼手動轉utf8編碼,筆者另外提供了一個函數來判斷一個字符串是不是utf8編碼

完整代碼如下:

總結

以上是生活随笔為你收集整理的c/c++操作mysql数据库使用utf8总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。