你把列名换成英文。Sqlite默认保存数据是用UTF8格式,而现有程序开发工具都是默认GB2312的格式,所以你编程写的中文不转码直接写到库里后,用任何数据库工具看肯定都是乱码。但是读出来之后仍然是GB2312,所以显示正常。反之如果你用数据库工具写中文,则默认存UTF8格式,用程序读出来就是乱码。也就是你说的不可兼得。如果要实现能够编程和数据库工具读写都正常,必须要转码。也就是说,保存时候,要把GB2312转成UTF8,而读出时候需要把UTF8在转成GB2312。