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

我正在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错误,还是编码错误?


慕斯709654
浏览 191回答 1
1回答

慕桂英4014372

问题是流氓线hashedFoo.Sum()直接投射到字符串中并将其分配给encodedFoo。这产生了一些字符串,这些字符串的字符无法被utf-8识别。hex.EncodeToString() 工作良好。我想这对我来说是一个使我的代码保持整洁的教训:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go