dongxin0031 2016-01-20 02:31
浏览 292

如何在Golang中将XML编码UTF-16转换为UTF-8

My code as below

xml_string = `<?xml version="1.0" encoding="UTF-16"?><a></a>`
var req Request

text := strings.NewReader(string(response))
nr, _ = charset.NewReaderLabel("utf-16", text)
decoder := xml.NewDecoder(nr)
err := decoder.Decode(&req)

By the way I am getting EOF error and nil decoded response. Not seem to make it work.

  • 写回答

1条回答 默认 最新

  • doujiaozhan2413 2016-01-20 03:04
    关注
    import "unicode/utf16"
    import "unicode/utf8"
    import "bytes"
    
    func DecodeUTF16(b []byte) (string, error) {
    
        if len(b)%2 != 0 {
            return "", fmt.Errorf("Must have even length byte slice")
        }
    
        u16s := make([]uint16, 1)
    
        ret := &bytes.Buffer{}
    
        b8buf := make([]byte, 4)
    
        lb := len(b)
        for i := 0; i < lb; i += 2 {
            u16s[0] = uint16(b[i]) + (uint16(b[i+1]) << 8)
            r := utf16.Decode(u16s)
            n := utf8.EncodeRune(b8buf, r[0])
            ret.Write(b8buf[:n])
        }
    
        return ret.String(), nil
    }
    

    Hope This helps u. ^_^

    评论

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)