【发布时间】:2018-06-12 08:04:05
【问题描述】:
我正在尝试将包含德语字符(例如 ß、ä、Ö、ü 等)的 XML 提要解组到一个结构中,这会导致错误:xml: encoding "utf-16" declared but Decoder.CharsetReader is nil unmarshal successful
基本上这就是我正在做的事情(省略了对有效部分的错误检查):
resp, _ := http.Get(url)
defer resp.Body.Close()
bodyBytes, _ := ioutil.ReadAll(resp.Body)
err = xml.Unmarshal(bodyBytes, &target)
if err != nil {
fmt.Println(err)
}
我尝试使用 github.com/basgys/goxml2json 将 xml 转换为 json,我尝试在解组之前转换为字符串并返回 []byte,我尝试使用其他 SO 答案中发布的各种解码器(因为它假设 charset reader 为 nil),如:
reader := bytes.NewReader(bodyBytes)
decoder := xml.NewDecoder(reader)
decoder.CharsetReader = charset.NewReader
err = decoder.Decode(&target)
if err != nil {
fmt.Println(err)
}
无论我尝试了什么,它都无法将 xml 提要解组/解码到结构中。在某些情况下,它最终会将所有文本转换为中文而不是德语。
【问题讨论】:
-
你能否提供一个你试图解组的xml数据的例子,以及目标值的类型定义。
-
请提供问题的独立示例。
-
@mkopriva 我还在测试,但看起来你在解决问题之前发布的答案..也许可以重新发布,这样我就可以接受了:)
-
@jack 我已将其删除,因为我还没有实际测试过它,并且我认为它可能会因某种形式的 utf16 字符串而失败,在这种情况下,您需要实现一个将 utf16 转换为utf8.我将取消删除答案并为可能偶然发现答案的任何其他读者添加注释。
标签: go