系统: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字符编码格式