我正在GAE中使用Go运行时编写Webapp。我正在保存一个包含字符串的结构,这是使用MD5对另一个字符串的字节进行哈希处理,然后将哈希和字节编码为十六进制字符串的结果。这是一些代码:foo := "some string"hashedFoo := md5.New()hashedFoo.Write([]byte(foo))encodedFoo := hex.EncodeToString(hashedFoo.Sum()) // this is what I'm assigning to my struct, and then saving into the Datastore这样可以很好地工作,在保存或检索存储的实体(通过代码)时不会有任何抱怨,但是,在加载数据存储查看器时,出现类似“ Error fetching entities: Property Foo is corrupt in the datastore”之类的错误,然后回溯中包含一堆内部引用GAE文件,然后输入:“ UnicodeDecodeError: 'utf8' codec can't decode byte 0x85 in position 1: unexpected code byte”。在本地开发数据存储查看器中不会发生这种情况,只有在实时生产环境中才会发生这种情况。所以我的问题是:hex.EncodeToString()使用什么编码?有没有办法指定utf-8输出?这是GAE错误,还是编码错误?
1 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
问题是流氓线hashedFoo.Sum()
直接投射到字符串中并将其分配给encodedFoo
。这产生了一些字符串,这些字符串的字符无法被utf-8识别。
hex.EncodeToString()
工作良好。
我想这对我来说是一个使我的代码保持整洁的教训:)
- 1 回答
- 0 关注
- 190 浏览
添加回答
举报
0/150
提交
取消