0

Unicode 字符再次引起了严重的头痛。这是我正在尝试做的事情:1)我正在将 Sqlite 表(包括 unicode 字符)导出到 xml 文件(效果很好并且 unicode 字符不会丢失)2)尝试再次导入这些 XML 表,因为它们已经被编辑- 工作正常,但 unicode 字符丢失。

这是读取 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(); 

问题是 Value(); (来自 tinyxml 文件的函数)返回 const char* 而不是 const wchar_t。我试图修改 TinyXml 文件以返回 wchar_t ,但这导致了一些令人讨厌的错误。

我现在的问题是:有谁知道如何使用 tinyxml 从 xml 文件中读取数据而不会丢失 unicode 字符?

在此先感谢您的帮助,一如既往地非常感谢。

4

2 回答 2

2

我有 tinyxml2 库的 wchar_t(或 WCHAR)版本(我为我的项目转换了它)

http://pastebin.com/VrgNknaa .cpp

http://pastebin.com/NEy2jjM0 .h

于 2013-01-20T19:10:15.190 回答
0

SQLite 始终使用 UTF-8,因此请确保您的 XML 文件在编辑时保持为 UTF-8 编码。

要强制 TinyXml 以 UTF-8 格式读取 XML 文件,请使用LoadFile(filename, TIXML_ENCODING_UTF8).

于 2012-10-15T14:23:29.660 回答