高分求解!!关于mysql C语言代码中插入中文的问题(中文乱码)!高手速来人傻分多
#背景-------------------------------------------------------------------------------
客户端语言 C#
服务器端语言 C
IDE VS
数据库mysql
mysql字符集配置:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
tb的字符集选择的是UTF-8
#现象-------------------------------------------------------------------------------
客户端是C#,有一个中文名称ch_name,C#将ch_name“中文”转成UTF8编码格式,然后存入buff中,发送到服务端,
服务器端收到buff后,拼接SQL语句
spritf(sqlstr,“INSERT INTO tb(id,name) VALUES(1,%s)",buff);
然后服务器端的C程序调用mysql_real_query(mysql,sqlstr,len) 插入数据库
也就是大体流程是:C# 中文->utf8 格式->buff ===》服务端 INSERT INTO tb(id,name) VALUES(1,buff) 插入数据库。
#疑问-------------------------------------------------------------------------------
请问此时,数据库中保存的ch_name是UTF8编码格式吗?
为什么此时我用第三方可视化工具navicat 链接查看(链接的字符集选择“使用mysql字符集”),此时看到的是乱码。
但是当我修改navicat 链接属性,去掉 “使用mysql字符集” 前面的勾选,选择65001(UTF-8),此时我在navicat 里再次查看记录,中文显示正常。
在navicat 中查询链接的字符集,显示的却是:
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
奇怪,mysql已经设置了全局---(也就是修改了my.cnf配置文件了),工具链接上之后不应该和数据库的配置同步吗?
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
为什么在navicat的character_set_results latin1 窗口显示的记录才正常显示中文呢?