doujun7161 2019-02-12 10:37
浏览 610

JSON编码Golang中的转义Unicode字符

Given the following example:

func main() {
    buf := new(bytes.Buffer)
    enc := json.NewEncoder(buf)
    toEncode := []string{"hello", "wörld"}
    enc.Encode(toEncode)
    fmt.Println(buf.String())
}

I would like to have the output presented with escaped Unicode characters:

["hello","w\u00f6rld"]

Rather than:

["hello","wörld"]

I have attempted to write a function to quote the Unicode characters using strconv.QuoteToASCII and feed the results to Encode() however that results in double escaping:

func quotedUnicode(data []string) []string {
    for index, element := range data {                                                
                quotedUnicode := strconv.QuoteToASCII(element) 
                // get rid of additional quotes                         
                quotedUnicode = strings.TrimSuffix(quotedUnicode, "\"") 
                quotedUnicode = strings.TrimPrefix(quotedUnicode, "\"") 
                data[index] = quotedUnicode                               
         }                                                                                                                                    
         return data                                                             
}  

["hello","w\\u00f6rld"]

How can I ensure that the output from json.Encode contains correctly escaped Unicode characters?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 永磁型步进电机PID算法
    • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
    • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
    • ¥15 如何处理复杂数据表格的除法运算
    • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
    • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
    • ¥200 uniapp长期运行卡死问题解决
    • ¥15 latex怎么处理论文引理引用参考文献
    • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
    • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?