在代码操作数据库的时候 会出现乱码,一下是解决方法
一、QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));插入数据语句若有中文必须先QObject::tr()一番,即进行编码,如query.exec("INSERT INTO student (schnum, name, sex, nation) VALUES (2614103, ‘天门,‘男‘, ‘汉族‘)");改为query.exec(QObject::tr("INSERT INTO student (schnum, name, sex, nation) VALUES (2614103, ‘天门,‘男‘, ‘汉族‘)"));结果在显示中都能得正确显示。二、将上面设置编码的地方改为:QTextCodec::setCodecForTr(QTextCodec::codecForLocale()));设置为本地编码,插入数据时对查询语句进行QObject::tr(),结果数据库和显示都为中文,能正常显示了。 参考http://www.qtcn.org/bbs/read.php?tid=18870sqlite3 中文乱码问题 qt4
标签:
小编还为您整理了以下内容,可能对您也有帮助:
sqlite3数据库,中文乱码该怎么处理,c++该怎么处理
Sqlite默认保存数据是用UTF8格式,而现有程序开发工具都是默认GB2312的格式,所以你编程写的中文不转码直接写到库里后,用任何数据库工具看肯定都是乱码。但是读出来之后仍然是GB2312,所以显示正常。反之如果你用数据库工具写中文,则默认存UTF
sqlite3数据库,中文乱码该怎么处理,c++该怎么处理
Sqlite默认保存数据是用UTF8格式,而现有程序开发工具都是默认GB2312的格式,所以你编程写的中文不转码直接写到库里后,用任何数据库工具看肯定都是乱码。但是读出来之后仍然是GB2312,所以显示正常。反之如果你用数据库工具写中文,则默认存UTF
android sqlite3 中文乱码问题,恳求~
楼主,插入字符的编码和读出时用的编码要一致,就是说:
假设,数据库中数据是你通过android代码插入,以GB2312编码格式,如:
db.execSQL("insert into question_tb values(?,?,?,?,?,?,?)",new String(val,"gb2312"));插入到表:
"Create table IF NOT EXISTS question_tb(" +"code int," +
"is_finished int," +
"is_english int,"+
"pic_name varchar(64)," +
"ans_back BLOB," +
"ans_true varchar(64)," +
"info int"+
")";
读出就是:
byte[] val = cursor.getBlob(cursor.getColumnIndex("ans_back"));String sn;
try {
sn = new String(val,"gb2312");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
就是说,插入和读取要么都做转换,要么都不做(android默认UTF-8格式)。