google-app-engine - GAE 数据存储查看器中的 utf8 错误(Go 运行时)

标签 google-app-engine google-cloud-datastore go

我正在使用 GAE 中的 Go 运行时编写 Web 应用程序。

我正在保存一个包含字符串的结构,它是用 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

这工作正常,在保存或检索存储的实体(通过代码)时没有提示,但是,在加载数据存储查看器时,我收到一条错误消息,内容类似于“获取实体时出错:Property Foo is corrupt in数据存储”,然后是一个带有一堆对内部 GAE 文件的引用的回溯,然后是这个:“UnicodeDecodeError:'utf8' 编解码器无法解码位置 1 中的字节 0x85:意外代码字节”。这不会发生在本地开发 Datastore Viewer 中,只会发生在实时生产中。

所以我的问题是:hex.EncodeToString() 使用什么编码?有没有办法指定 utf-8 输出?这是一个 GAE 错误,还是一个糟糕的编码错误?

提前谢谢你。

最佳答案

问题是流氓行将 hashedFoo.Sum() 直接转换为字符串并将其分配给 encodedFoo。这产生了一些字符串,其中包含 utf-8 无法识别的字符。

hex.EncodeToString() 工作正常。

我想这是我自己的一个教训,让我的代码保持干净整洁:)

关于google-app-engine - GAE 数据存储查看器中的 utf8 错误(Go 运行时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9057899/

相关文章:

python - 如何将多个文件上传到 BlobStore?

jquery源在html文件中的位置重要与否

ruby-on-rails - Django、Ruby on Rails、Google App Engine 等之间有什么区别?

python - 创建 GAE 实体时遇到问题

go - Go 中的 len(channel) 是线程安全的吗?

go - 如何在 Golang 中使用 gobuffalo/packr

string - 有没有更好的方法来实现模仿有限字符显示的水平滚动文本效果?

java - 使用 Java 在 Google Compute Engine 上进行批处理

python - 对 AppEngine 进行单元测试以发现故障

google-app-engine - google appengine 如何测量数据存储区的放置操作