【发布时间】:2013-12-22 12:06:00
【问题描述】:
我在 json.Marshal 的字符串列表中得到了这个:
json: invalid UTF-8 in string: "...ole\xc5\"
原因很明显,但是如何在 Go 中删除/替换这些字符串?我一直在阅读有关 unicode 和 unicode/utf8 软件包的文档,但似乎没有明显/快速的方法。
例如,在 Python 中,您有一些方法可以删除无效字符,将其替换为指定字符或严格设置,这会在无效字符上引发异常。我怎样才能在 Go 中做同样的事情?
更新:我的意思是得到异常的原因(恐慌?) - json.Marshal 期望是有效的 UTF-8 字符串中的非法字符。
(非法字节序列如何进入该字符串并不重要,通常的方式 - 错误、文件损坏、其他不符合 unicode 的程序等)
【问题讨论】:
-
原因何在?我猜你那里有一个 latin1(或 ISO8859 的其他变体)字符串,在这种情况下,你不希望函数吞下这些字符,而是在继续之前将它们转换为 UTF-8 ...
-
在 Go 1.2 中,json 解析器将接受格式错误的 UTF-8。它将用替换字形替换格式错误的字节。