Я пишу веб-приложение со средой выполнения Go в GAE.
Я сохраняю структуру, которая содержит строку, которая является результатом хеширования байтов другой строки с помощью 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
».Этого не происходит в Datastore Viewer для локальной разработки, только в живом производственном.
Итак, мои вопросы: какую кодировку использует hex.EncodeToString()
?Есть ли способ указать вывод utf-8?Это ошибка GAE или действительно плохая ошибка кодирования?
Заранее спасибо.