ClientDataset读取sqlite3数据库,中文乱码问题
如题:用ClientDataSet关联上sqlite3的一张表,表中有中文字段,但是当用DBGrid显示出来时,中文乱码,该怎么解决
[解决办法]
我来了,楼主还在么?
经研究发现,问题的主要原因是你写入数据的时候,字符的编码是ANSI的,而在DBGrid中显示时,则是按UTF-8的编码显示,所以出现乱码。那么解决方法就是:写入时按UTF-8编码写入,如:
void __fastcall TForm1::Button3Click(TObject *Sender){ char * errmsg; AnsiString strSQL = AnsiString().sprintf( "insert into t1(id, name) values(1, '%s')", AnsiToUtf8("张三")); int result = sqlite3_exec(PDB, strSQL.c_str(), 0,0, &errmsg); if (result) { Label1->Caption = "插入数据失败"; } else { Label1->Caption = "插入数据成功"; }}