2011-01-20 46 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

多字節同一

也許有幫助,再見

相關問題