首頁 >後端開發 >Golang >如何在 Go 中處理非 UTF-8 編碼的 XML?

如何在 Go 中處理非 UTF-8 編碼的 XML?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-26 03:28:151043瀏覽

How to Handle Non-UTF-8 Encoded XML in Go?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn