CString格式问题和Windows XP和7的差异?

时间:2011-01-20 12:44:27

标签: c++ sqlite mfc formatting cstring

有一个问题,下面的代码适用于Windows 7而不适用于Windows XP?不管怎样,你知道原因吗?提前致谢。我已经检查过它不是数据库错误。

对于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问题。

2 个答案:

答案 0 :(得分:0)

这实际上似乎不是Windows问题。你确定你没有在有效的版本和没有版本的版本之间做不同的构建吗?

上面的代码存在问题,因为如果进行Unicode构建,sqlite3_column_text()将返回错误类型的字符串。对于Unicode版本,您需要sqlite3_column_text16()代替。

答案 1 :(得分:0)

检查编译期间配置的字符集在两个平台上是否相同

的unicode

多字节

也许有帮助,再见