我正在編寫一個使用Raptor RDF庫來解析rdf-xml文件(UTF-8編碼)的程序(C++,Windows)。 除非解析器找到包含特殊字符的文字值(例如'μ''°''''等),否則一切都會正常發生。在這些情況下,解析器返回一個未解釋的字符串。 例如,如果解析器發現的字面意義:如何重新解釋特殊字符的「源代碼」
blaμbla
它會返回一個包含一個字符標籤:
「喇嘛\ u00B5bla」
(引號不是錯誤,返回的字符串是「'由'' 「)。
我說,這個字符串是不解釋,因爲如果我直接在我的代碼寫出來,我將有預期的結果:
std::string test("bla\u00B5bla"); printf(test.c_str());
輸出:
blaμbla
如果我想重現th Raptor解析器返回的字符串,我應該這樣做:
std::string test("\"bla\\u00B5bla\""); printf(test.c_str());
輸出:
「喇嘛\ 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):
「喇嘛\ u00B5bla」
我的目標只是恢復從原來正確的字符串。
你的目標是什麼?這種類型的問題尖叫「[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)」。 – Jon
我猜他的目標是在字符串中包含字符'μ',而不是6個字符「\ u00B5」的文本。 – Dialecticus
Bwadrochit,你能添加一小段使用Raptor的代碼嗎? – Dialecticus