Я пытаюсь сохранить закодированные данные, используя encoding/gob
из Голанга, в Postgres. Я тоже использую Горм.
Во-первых, отправка данных формы с использованием
if err := json.NewDecoder(r.Body).Decode(model); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
В настоящее время client_encoding
установлено в UTF8 в базе данных postgres. Вот что я использую для кодирования:
type payload struct {
Key []byte
Nonce *[nonceLength]byte
Message []byte
}
// Encrypt message
p.Message = secretbox.Seal(p.Message, plaintext, p.Nonce, key) // key set prior to this
buf := &bytes.Buffer{}
if err := gob.NewEncoder(buf).Encode(p); err != nil {
return nil, err
}
return buf.Bytes(), nil
Затем я сохраняю string(buf.Bytes())
, который хранится в столбце базы данных, который в настоящее время является строковым типом. Теперь я новичок в кодировании, и я думаю, что у gob просто другая кодировка для моей базы данных. Я получаю эту ошибку в консоли:
(pq: invalid byte sequence for encoding "UTF8": 0xff)
Я следую этой идее для шифрования / дешифрования:
https://gist.github.com/fuzzyami/f3a7231037166117a6fef9607960aee7
Из того, что я прочитал, я не должен кодировать структуры в БД, в данном случае p
, кроме случаев использования gob
. Поправьте меня, если я ошибаюсь (не могу найти ресурс в тот момент, когда я нашел это).
Кто-нибудь может указать мне правильное направление для хранения этих данных в Postgres, который расшифровывается позже? Я явно не понимаю процесс кодирования и не совсем уверен, с чего начать здесь, читая ресурсы, поэтому любая помощь приветствуется!