为了账号安全,请及时绑定邮箱和手机立即绑定

GAE数据存储查看器中的utf8错误(运行时)

GAE数据存储查看器中的utf8错误(运行时)

Go
慕斯709654 2021-05-05 14:13:55
我正在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() 工作良好。

我想这对我来说是一个使我的代码保持整洁的教训:)


查看完整回答
反对 回复 2021-05-10
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信