2011-01-20 76 views
0

存在一个问题,下面的代码适用于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的问题。

+1

数据库可能是UTF -8,并且您正在使用Windows“Unicode”构建UTF-16,它使用`a_value.Format(L“%s”,sqlite3_column_text16(getCommand() - > getStatement(),idx ))`这两种情况。 – dalle 2011-01-20 13:07:57

+0

你是对的,但我们也有一个编码器来解决这个问题。 – 2011-01-20 13:09:42

回答

0

这确实看起来不是Windows问题。你确定你没有在作品版本和不作者版本之间做不同的构建?

上面的代码有问题,因为如果您执行Unicode编译,sqlite3_column_text()将返回错误的字符串类型。对于Unicode版本,您需要改为sqlite3_column_text16()

0

检查,如果在编译过程中配置的字符集是两个平台

的unicode

多字节同一

也许有帮助,再见