2012-02-12 50 views
1

我试图将IP数据包有效载荷与Django一起存储在PostgreSQL数据库中。Django存储非Unicode数据

目前,我正在讲述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试图保存对象时,它会抛出编码错误。字节串似乎是明显的解决方案,但它看起来不像Django支持那样。

回答

2

如果你想存储任意的字节串,你应该这样声明它们。许多(大多数?)字节序列不是有效的UTF-8,所以它不是一个很好的方法来存储它们。 CharField用于存储文本,并且没有文本。

对这个问题的答案可能会有所帮助:Django Blob Model Field

+0

他说什么。 IP数据包有效负载是二进制数据块。它既不是一个字符串,也不是Unicode。即使协议是100%的Unicode文本,数据包有效载荷也可能是Unicode无效的。 – 2012-02-12 22:51:09