2010-09-24 37 views
0

我正在使用libxml2。所有函數都使用xmlChar *。我發現xmlChar是一個無符號的字符。libxml2關於xmlChar的問題*

所以我有一些關於如何使用它的問題。 1)例如,如果我使用utf-16或utf-32文件處理libxml2如何處理它並返回函數中的xmlChar?我會失去一些字符嗎? 2)如果我想對這個字符串做些什麼,我應該把它轉換爲char *還是wchar_t *以及如何?

我會失去一些人物嗎?

回答

1

xmlChar用於處理UTF-8編碼只有

因此,要回答你的問題:

  1. 不,你不會如使用UTF-16UTF-32丟失任何字符。只需使用iconv或任何其他庫在將數據傳遞給API之前對其數據進行編碼即UTF-16UTF-32

  2. 不要只是「投」字符串。在需要時使用其他編碼轉換它們。

+0

謝謝,但現在我還有一些問題:它現在如何工作?因爲即使我提供了一個utf-16文件。 Libxml仍然釋放unsigned char *。爲什麼以及它如何工作?第二個是我如何將UTF32或UTF16轉換爲UTF-8。我不想使用一些第三方庫。我需要在unix下做。我知道windows有函數WideCharToMutliByte做unix有這樣的事情嗎?最後一個問題是如何將xmlchar轉換爲其他編碼和哪一個? – Nikita 2010-09-24 12:35:46

+0

是的。 API正在做一些內部轉換。所有CALL都是基於xmlChar的,即使您用來解析XML的FILES或NETWORK Feed是以不同的字符集編碼的。在UNIX中,使用LIBICONV。這是一個相當常見的庫,如果我正確記得它已經捆綁了LIBXML2。要將xmlChar轉換爲其他編碼,請再次使用LIBICONV。 Redards ... – 2010-09-24 12:44:00

+0

還有一個問題。爲什麼你說我應該先將UTF-16編碼到libxml之前編碼。我只是試圖做到不轉換,然後我將xmlCheckUTF8函數應用於從lib xml發佈的每個元素,並且沒問題。我猜這個unsigned char *只是一個字節數...... – Nikita 2010-09-24 13:40:51