系統:Ubuntu16.04
MYSQL:MYSQL5.6
建庫表使用的是編碼格式為:UTF-8
現象:
使用C++的MYSQL數據庫接口,讀取數據庫中的中文字符出現亂碼,具體表現為中文字符在終端顯示為 “?” ,英文均顯示為正常,無亂碼
解決:調用MYSQL數據庫接口之前(連接上數據庫成功之后),執行
mysql_query(xxx,'SET NAMES UTF8');
其中xxx表示mysql*類型
SET NAMES顯示客戶端發送的SQL語句中使用什么字符集
"SET NAMES UTF8"語句包括兩層含義:
1.告訴服務器,發送到此客戶端的數據采用UTF-8字符編碼格式(例如,如果你使用一個SELECT語句,它表示列值使用了什么字符集)
2.同時告訴服務器將從該客戶端傳來的信息采用UTF-8字符編碼格式