首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

ClientDataset读取sqlite3数据库,中文乱码有关问题

2012-11-19 
ClientDataset读取sqlite3数据库,中文乱码问题如题:用ClientDataSet关联上sqlite3的一张表,表中有中文字段

ClientDataset读取sqlite3数据库,中文乱码问题
如题:用ClientDataSet关联上sqlite3的一张表,表中有中文字段,但是当用DBGrid显示出来时,中文乱码,该怎么解决

[解决办法]
我来了,楼主还在么?

经研究发现,问题的主要原因是你写入数据的时候,字符的编码是ANSI的,而在DBGrid中显示时,则是按UTF-8的编码显示,所以出现乱码。那么解决方法就是:写入时按UTF-8编码写入,如:

C/C++ code
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 = "插入数据成功";    }} 

热点排行