我有一批编码错误的记录。 这种一线给我一个正确的结果
cat example.txt | iconv -f utf-8 -t iso8859-2
但是以下程序给我一个错误encoding: rune not supported by encoding.
func main() {
s:= []byte {196, 144, 194, 154, 196, 144, 194, 176, 196, 144, 197, 186, 196, 144, 196, 190, 197, 131, 194, 128, 196, 144, 194, 176, 32, 52, 52, 53, 54, 50, 53, 54, 10, 10, 0, 0, }
fmt.Println(s)
dec := charmap.ISO8859_2.NewEncoder()
out, err := dec.Bytes(s)
if err != nil {
fmt.Println(err)
return
}
expectedOutput := "Камера 4456256"
fmt.Println("result", string(out), "expect:", expectedOutput)
}
我想知道没有iconv绑定是否可以解决我的问题?
答案 0 :(得分:2)
搜索charmap.ISO8859_2
表示您正在使用golang.org/x/text。
在这里,给出给定Charmap
,我们将了解转换是如何完成的:
特定行突出显示错误的来源。因此,您输入的内容包含utf8中的字符,这些字符无法在iso8859-2中表示或无效的utf8。
Here,您发现错误是如实地处理的,在RepertoireError中使用replacement
似乎是一个红色鲱鱼。
当然,您不需要iconv绑定。您可以逐个字符地迭代输入的字符并将其编码为iso8859-2并决定自己如何处理无法表示的字符。