TinyXML不支援UNICODE的解決方案【改造TinyXML】

來源:互聯網
上載者:User

TinyXML目前僅直接支援解析UTF-8或者ASCII編碼的XML, 對於其它編碼必須經過轉換才能使用, 這給Windows項目帶來了麻煩, 頻繁的編碼轉換也可能給效能帶來巨大損失.


對此, 作者給出瞭解釋的是"UTF-8 is not a double byte format - but it is a standard encoding of Unicode! TinyXML does not use or directly support wchar, TCHAR, or Microsoft's _UNICODE at this
time. It is common to see the term "Unicode" improperly refer to UTF-16, a wide byte encoding of unicode. This is a source of confusion.
"


下面說說這樣的局限性

                                        對於ASCII(多位元組字元集)項目,
雖然支援UTF-8, 但卻不能與控制項直接互動, 必須經過轉換, 否則不能支援中文.(But for English users , UTF-8 is the same as low-ASCII)

                                        而對於UTF-16(Unicode 字元集)項目, 情況更糟糕, 由於TinyXML使用char *, 你不能將其直接編譯為寬字元版本, 即使編譯了寬字元版本(替換char *等), 原來對UTF-8的支援就喪失了(需要修改處理方式).


對此, 我的解決方案是:

                                       1.將所有char用TCHAR代替, 將's'改為_T('s') 以及"str"改為_T("str")

                                        2.實現自己的String(可選), 這裡主要是為了方便以及整合到rlib中

                                        3.在LoadFile/SaveFile中進行適當的編碼轉換

                                        4.對TinyXML的源碼做部分修改


至此, TinyXML已經能夠編譯為寬字元版本了, 並且支援UTF-8,UTF-16,UTF-16F,ASCII, 易於拓展語言支援.


相關資訊參見: RLIB源碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.