CString格式问题和Windows XP和7中的差异?
问题描述:
存在一个问题,下面的代码适用于Windows 7,不适用于Windows XP?无论如何,你知道这个的原因吗?提前致谢。我检查过它不是数据库错误。CString格式问题和Windows XP和7中的差异?
对于Win 7,它返回存储的内容,对于Win XP也是如此。但是,XP中的格式化将CString设置为""
。
if(getDB()->getEncoding() == IDatabase::UTF8){
a_value.Format(_T("%s"), sqlite3_column_text(getCommand()->getStatement(), idx));
}else{
a_value.Format(_T("%s"), sqlite3_column_text16(getCommand()->getStatement(), idx));
}
此外,我们确信它不是一个Unicode的问题。
答
这确实看起来不是Windows问题。你确定你没有在作品版本和不作者版本之间做不同的构建?
上面的代码有问题,因为如果您执行Unicode编译,sqlite3_column_text()
将返回错误的字符串类型。对于Unicode版本,您需要改为sqlite3_column_text16()
。
答
检查,如果在编译过程中配置的字符集是两个平台
的unicode
或
多字节同一
也许有帮助,再见
数据库可能是UTF -8,并且您正在使用Windows“Unicode”构建UTF-16,它使用`a_value.Format(L“%s”,sqlite3_column_text16(getCommand() - > getStatement(),idx ))`这两种情况。 – dalle 2011-01-20 13:07:57
你是对的,但我们也有一个编码器来解决这个问题。 – 2011-01-20 13:09:42