2012-10-15 67 views
0

再次unicode字符導致嚴重頭痛。這是我想要做的: 1)我正在導出Sqlite表(包括unicode字符)到xml文件(偉大工作和unicode字符不會丟失) 2)嘗試再次導入這些XML表ater他們有被編輯 - 工作正常,但unicode字符丟失。TinyXml:從XML文件中讀取wstring

這裏是讀取XML文件中的代碼:

wstring input; 
TiXmlElement* root = doc.FirstChildElement(); 
// count number of rows in xml file 
TiXmlElement* counter = root->FirstChildElement(); 
int totalRows = 0; 

while(counter != NULL) { 
    totalRows += 1; 
    counter = counter->NextSiblingElement(); 
} 

// import data 
wchar_t firstChar; 
int check, length; 
wstring finalInput; 
TiXmlElement* rowElement = root->FirstChildElement(); 
for (int a = 1; a <= totalRows; a++) { 
TiXmlElement* columnElement = rowElement->FirstChildElement(); 
// clear insert statement 
insert = start; 

for (int b = 1; b <= columns; b++) { 
    node = columnElement->FirstChild(); 
    text = node->ToText(); 
    // !!! here we have the problem data gets imported as a string !!! 
    input = text->Value(); 

問題是,值(); (來自tinyxml文件的函數)返回const char *而不是const wchar_t。我試圖修改TinyXml文件來返回wchar_t,但是這導致了一些令人討厭的錯誤。

我現在的問題是:有誰知道如何從tinyxml的XML文件中讀取數據而不丟失Unicode字符?

在此先感謝,您的幫助一如既往,非常感謝。

回答

0

SQLite總是使用UTF-8,所以在編輯時確保XML文件保持以UTF-8編碼。

要強制TinyXml以UTF-8格式讀取XML文件,請使用LoadFile(filename, TIXML_ENCODING_UTF8)

+0

我不知道你已經理解這個問題,忘記sqlite - 它可以導出/導入unicode字符串就好。我的問題是TinyXML中的Value()函數返回一個字符串而不是wchar_t的wstring。 這意味着當我嘗試讀取xml文件並將我的數據返回到我的應用程序時,我丟失了可能導出或添加到xml文件的任何Unicode字符。 不知何故我需要一個或多個函數從unicode庫返回一個wstring或另一組啓用Unicode的字符供我閱讀。 – TPhoton

+0

UTF-8編碼的字符串*是* char數組。 –

+0

好,我的壞。因此,如果我確保保存並加載UTF8編碼的xml文件,那麼檢索unicode字符(如é,€等)應該沒有問題?確切地說, – TPhoton