我正在编写一个使用 Raptor RDF 库解析 rdf-xml 文件(UTF-8 编码)的程序(c++,Windows)。一切都很好,除非解析器找到包含特殊字符的文字值(例如 'µ' '°' '²' 等)。在这些情况下,解析器返回一个非解释字符串。例如,如果解析器找到文字值:
无语
它将返回一个 char 选项卡,其中包含:
“bla\u00B5bla”
(引号不是错误,返回的字符串被'"'包围)。
我说这个字符串是不可解释的,因为如果我直接在我的代码中写它,我会得到预期的结果:
std::string test("bla\u00B5bla"); printf(test.c_str());
输出 :
无语
如果我想重现 Raptor 解析器返回的字符串,我应该这样做:
std::string test("\"bla\\u00B5bla\""); printf(test.c_str());
输出 :
“bla\u00B5bla”
所以,我的问题是:如何重新解释字符串中的特殊字符?我已经做了一些研究,但我找不到任何可以回答这个问题的东西。任何帮助都会非常有用和感激,谢谢。
EDIT1:这里有一些简化的代码显示了我如何得到“非解释”字符串:
void triple_handler(void* user_data, raptor_statement* triple) {
if (triple->object->type == RAPTOR_TERM_TYPE_LITERAL){
printf((char*) raptor_term_to_string(triple->object));
}
}
输出(假设文件中的原始文字值为:blaµbla):
“bla\u00B5bla”
我的目标只是从中恢复原始正确的字符串。