帮UP了!=========================================================
我的回复,尽可能为你分忧解难!
BLOG:blog.csdn.net/softj --欢迎光临,有更多信息等着你!
QQ群:8476022专研数据库 --大家进来聊一聊!
MSN:[email protected] --这不常用!
Mail:[email protected] --有什么问题可以和我来EMAIL!
=========================================================
我的回复,尽可能为你分忧解难!
BLOG:blog.csdn.net/softj --欢迎光临,有更多信息等着你!
QQ群:8476022专研数据库 --大家进来聊一聊!
MSN:[email protected] --这不常用!
Mail:[email protected] --有什么问题可以和我来EMAIL!
=========================================================
以下是我的设置
mysql> show variables like "%char%";
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | gbk
|
| character_set_connection | gbk
|
| character_set_database | gbk
|
| character_set_results | gbk
|
| character_set_server | gbk
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets/ |
mysql> show variables like "%coll%";
+----------------------+----------------+
| Variable_name | Value |
+----------------------+----------------+
| collation_connection | gbk_chinese_ci |
| collation_database | gbk_chinese_ci |
| collation_server | gbk_chinese_ci |
+----------------------+----------------+
3 rows in set (0.00 sec)
在命令行模式插入也是正确的。
mysql> insert into file_info
-> (file_name,file_index,file_length,file_info)
-> values
-> ("c:\\你好.txt",3,1234,"数据库管理");
Query OK, 1 row affected (0.00 sec)mysql> select file_name from file_info;
+-------------+
| file_name |
+-------------+
| c:\你好.txt |
+-------------+
1 row in set (0.00 sec)
可用vc插入就回出错。
sprintf(strSql,"insert into file_info(file_name,file_index,file_length,file_info) Values ('c:\\你好.txt',3,1234,'数据库管理')");//如果用这条语句插入不会成功
sprintf(strSql,"insert into file_info(file_name,file_index,file_length,file_info) Values (convert('c:\\你好.txt' using gbk),3,1234,convert('数据库管理' using gbk))");//这条语句可以插入成功
if(mysql_query(mysql,strSql))
{
m_ShowResult=m_ShowResult+"更新错误\n";
if(mysql_error(mysql)[0] != '\0')
{
m_ShowResult=m_ShowResult+mysql_error(mysql);
AfxMessageBox("mysql 错误!");
} UpdateData(false);//显示
return;
}
可是插入成功后查询出来的结果是:
'c:????.txt', 3, 1234, '?????????í'
为什么呢?
如果在这条语句之前先执行sql语句
“set client gbk"//具体语句可能记得不清楚,但大概是设置客户端字符集
可以插入成功,但查询出来仍然是问号?
我真是山穷水尽了
SET character_set_client = gbk;
SET character_set_connection = gbk;
SET character_set_database = gbk;
SET character_set_results = gbk;
SET character_set_server = gbk;SET collation_connection = gbk_bin;
SET collation_database = gbk_bin;
SET collation_server = gbk_bin;