事情是这样的:
博主尝试用Python的sqlite3数据库存放加密后的用户名密码信息,表是这样的
CREATE TABLE IF NOT EXISTS user
(
userID INTEGER PRIMARY KEY AUTOINCREMENT,
userStudentID BLOB NOT NULL UNIQUE ON CONFLICT IGNORE,
userPassword BLOB NOT NULL
);
其中userStudentID and UserPassword 储存成了BLOB类型,作为二进制存储。
但当博主把加密后的字节串插入数据库时,却报出如下错误:
sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
显然它把博主的字节串当成了未经编码的字符串。此时不能参考它的做法,把text_factory 置为 str,这样的话博主的密文就会被编码存放(如utf-8),而如果有些字节无法按utf-8编码的话,就会引发异常或被忽略。
网上搜了好多文章,均没有解决博主的问题。
后来还是找到了Official Document