我們有來自外部系統通過肥皂信封的xml消息。如果有一個編碼頭,那麼我們使用它,否則我們提供一個UTF-8。Xerces-c無法解析倒置問號
最近,我們已經得到消息了有趣的字符,如倒置的問號:¿,重音字母等
我們的系統處理這些消息未能解析此。我注意到這些XML的格式是iso-8859-1 - 所以我試着將其更改爲UTF-8,以查看解析器是否會彈球,但仍然沒有運氣。
瞭解UTF-8支持更廣泛的範圍,我在這裏檢查了iso-8859-1的字符集表:http://en.wikipedia.org/wiki/ISO/IEC_8859-1。它似乎倒置的問號,支持重音字母。
我打這個牆,真的很感謝一些幫助!謝謝!
使用xerces-c 2.7.0在x86 linux機器上使用gnu編譯器3.4編譯的C++/stl代碼。
正常情況下,一個XML編寫器應該使用實體編碼對這些字符進行編碼...... – leemes 2013-03-04 15:22:46
正如leemes所說,問題不在於您使用的字符集,而是XML預期很多特殊字符被正確編碼爲&something;而不是代碼中的文字。所以無論誰給你發送這些數據基本上都是給你發送無效的XML。 – 2013-03-04 15:24:32
@OriginalCliche:你是否實際上將郵件內容重新編碼爲UTF-8,或者是否只是將xml頭從「iso-8859-1」更改爲「utf-8」?不僅「UTF-8支持更廣泛的範圍」,問題在於代碼不同。倒置問號可能顯示爲兩個字節(0xc2 0xbf),而在iso-8859-1中則爲一個字節(0xbf) – Luis 2013-03-04 15:41:13