在D2007下用dbexpress连mysql5.0.48,怎么解决取出中文乱码问题?插入中文数据时通不过。已经测试过下面的代码
SQLQuery1.Close();
SQLQuery1.SQL.Text := 'SET NAMES GBK';
SQLQuery1.ExecSQL();
SQLQuery1.Close();
SQLQuery1.SQL.Text := 'select * from yonghu';
SQLQuery1.Open;
showmessage(SQLQuery1.FieldByName('xingming').AsString); //返回???
SQLQuery1.Close();
SQLQuery1.SQL.Text := ' INSERT INTO `yonghu` '
+ ' (`bianhao`, `daihao`, `xingming`) '
+ ' VALUES '
+ ' (2, "admin1", "管理员")';{ 1.exe raised exception class TDBXError with message 'Incorrect string value:
'\xB9\xDC\xC0\xED\xD4\xB1' for column 'Y_xingming' at row 1'. }
SQLQuery1.execsql;
SQLQuery1.Close();
SQLQuery1.Close();
SQLQuery1.SQL.Text := 'SET NAMES GBK';
SQLQuery1.ExecSQL();
SQLQuery1.Close();
SQLQuery1.SQL.Text := 'select * from yonghu';
SQLQuery1.Open;
showmessage(SQLQuery1.FieldByName('xingming').AsString); //返回???
SQLQuery1.Close();
SQLQuery1.SQL.Text := ' INSERT INTO `yonghu` '
+ ' (`bianhao`, `daihao`, `xingming`) '
+ ' VALUES '
+ ' (2, "admin1", "管理员")';{ 1.exe raised exception class TDBXError with message 'Incorrect string value:
'\xB9\xDC\xC0\xED\xD4\xB1' for column 'Y_xingming' at row 1'. }
SQLQuery1.execsql;
SQLQuery1.Close();
SQLQuery1.Close();
SQLQuery1.SQL.Text := ' INSERT INTO `yonghu` '
+ ' (`bianhao`, `daihao`, `xingming`) '
+ ' VALUES '
+ ' (2, "admin1", "管理员") '
SQLQuery1.execsql; ;{这里就报错了: 1.exe raised exception class TDBXError with message 'Incorrect string value:
'\xB9\xDC\xC0\xED\xD4\xB1 ' for column 'Y_xingming ' at row 1 '. }
http://www.itpub.net/showthread.php?s=&threadid=662823
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database gb2312
character_set_filesystem binary
character_set_results utf8
character_set_server gbk
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\
--------------------------
brightyang: 不明白你说的。。能具体点?
adoquery1.SQL.Add('insert into dbo.VPN_SendMessageLog ( SendDate_datetime,SendTimes_int,LogContent_ntext ) values (getdate(),'+edit1.Text+','''+ intext+''')');当我的intext为中文的时候,直接存入会变乱码;这时,你可以在字段的存前面加N
adoquery1.SQL.Add('insert into dbo.VPN_SendMessageLog ( SendDate_datetime,SendTimes_int,LogContent_ntext ) values (getdate(),'+edit1.Text+',N'''+ intext+''')');
这个是用dbgrid返回的结果(上面是sql manager 2007返回的,它的中文显示就没问题)
Variable_name Value
character_set_client latin1
character_set_connection latin1
character_set_database gb2312
character_set_filesystem binary
character_set_results latin1
character_set_server gbk
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\------------------
还是那个问题怎么解决?我也在测试。----------
brightyang :你用的是ado连接 能插入中文数据,我用的是dbexpress连接 插入中文数据都通不过(报错)
我还是想知道如果指定GBK字符集,怎么处理。
mysql5用默认字符集 用dbexpress连就没有中文乱码现象。。