在Go 中處理非UTF-8 XML 輸入
嘗試使用Go 的xml 套件中的Unmarshal 函數解組XML 輸入時,如果輸入不是以UTF-8 編碼,則可能會遇到問題。為了解決這個問題,需要一個 CharsetReader。
哪裡可以找到 CharsetReader
幸運的是,Go 的 net/html 套件提供了 charset.NewReaderLabel 形式的解決方案。此閱讀器可以處理非 UTF-8 編碼輸入到 UTF-8 的轉換。
2015 年及以後的更新解決方案
在 Go 的早期版本中,必須實現自訂 CharsetReader。然而,較新版本的 Go 使用 charset.NewReaderLabel 提供了更簡單的解決方案。以下是更新的程式碼片段:
import ( "encoding/xml" "bytes" "golang.org/x/net/html/charset" ) // ... reader := bytes.NewReader(theXml) decoder := xml.NewDecoder(reader) decoder.CharsetReader = charset.NewReaderLabel err = decoder.Decode(&parsed)
透過使用 charset.NewReaderLabel 作為 CharsetReader,Unmarshal 函數現在可以成功處理非 UTF-8 編碼的 XML 輸入,而無需手動轉換或自訂實作。
以上是如何在 Go 中處理非 UTF-8 編碼的 XML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!