2011-03-14 284 views
1

我可以在unicode中使用libxml2嗎?我想讀取和寫入用unicode編寫的xml文件,是否有可能使用libxml2與c + +?我可以在unicode中使用libxml2嗎?

+0

你想知道libxml2是否可以處理wchar_t *?或者你想知道它是否支持不是ASCII 7位的編碼? – 2011-03-14 15:25:02

回答

3

它會出現the answer is yes

使用UTF-8含量*此處理指令:

<?xml version="1.0" encoding="UTF-8"?> 

*這就是我假設你的意思 「統一」,因爲Unicode is not UTF-8

+0

爲「Unicode不是UTF-8」的鏈接+1! – 2011-03-14 15:29:45

+0

謝謝。我在鏈接中讀到「xmlChar,libxml2數據類型是一個字節,這些字節必須組裝爲UTF-8有效字符串」。那是什麼意思?什麼是組裝爲utf-8的字節? – 2011-03-20 18:16:00

3

libxml2在內部使用utf8編碼存儲值,並將使用iconv將輸入從指定的編碼(在xml編碼聲明中)轉換爲utf8。所以是的,libxml2可以在某種意義上使用unicode。

但是,如果你真正的問題是:是否libxml2接受wchar_t *作爲輸入,那麼答案是否定的。您必須將其轉換爲8位編碼(utf8可能更安全,因爲它可以編碼每個unicode編碼點)。

+0

我不明白「libxml2在內部使用utf8編碼」是什麼意思,這是什麼內部使用? – 2011-03-14 16:01:24

+0

有多種方式可以對包含擴展字符的字符串進行編碼(iso-8859-1,ascii,shift-jis,utf-8,utf-16,...)。其中一些只覆蓋了unicode字符集的一部分,其他的則完全覆蓋它。在xml中,文檔可以告訴它使用什麼編碼(使用'<?xml version =「1.0」encoding =「iso-8859-1」?>'tag)。當解析一個文檔時,如果在處理之前還沒有使用這個編碼,'libxml2'會將文檔轉換爲'utf-8',並且會給你'utf-8'的內容。 – 2011-03-14 16:06:40

+0

謝謝。那麼wchar_t *的含義是什麼?它將從哪裏來,如果不是從XML文件? – 2011-03-14 16:08:09

相關問題