Django存储非Unicode数据

2 投票
1 回答
3305 浏览
提问于 2025-04-17 12:55

我正在尝试用Django把IP数据包的有效载荷存储到PostgreSQL数据库里。

目前,我把有效载荷存储为一个字符字段(CharField)。

但是我遇到了这个错误:

django.db.utils.DatabaseError: invalid byte sequence for encoding "UTF8": 0xedbc93
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

有没有什么好的方法来存储这些数据?我可以用str(packet.payload)来处理,没有错误,但当Django试图保存这个对象时,就出现了编码错误。用字节字符串(bytestring)似乎是个明显的解决办法,但看起来Django不支持这个。

1 个回答

4

如果你想存储任意的字节串,应该把它们声明为字节串。很多(甚至大多数)字节序列并不是有效的UTF-8编码,所以用UTF-8来存储它们并不是个好主意。CharField是用来存储文本的,而你这里并没有文本。

这个问题的答案可能会对你有帮助:Django Blob模型字段

撰写回答