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 中国語 Web サイトの他の関連記事を参照してください。