gpt4 book ai didi

python - SQLAlchemy 和 UnicodeDecodeError

转载 作者:IT王子 更新时间:2023-10-29 00:30:05 32 4
gpt4 key购买 nike

我得到了

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)

当我将来自使用 SQLAlchemy 访问的 MySQL 数据库的文本传递给此函数时:

re.compile(ur"<([^>]+)>", flags=re.UNICODE).sub(u" ", s)

数据库编码是 utf-8,我什至将编码传递给 SQLAlchemy 的 create_engine 函数。

编辑:这就是我查询数据库的方式:

doc = session.query(Document).get(doc_id)
s = doc.title

根据建议,我将 s.decode('utf-8') 传递给 sub 。上面的错误消失了,但是对于不同的文档我得到了不同的错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xeb in position 449: invalid continuation byte

数据库表是这样定义的:

CREATE TABLE `articles` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`cdate` datetime DEFAULT NULL,
`link` varchar(255) DEFAULT NULL,
`content` text,
UNIQUE KEY `id` (`id`),
UNIQUE KEY `link_idx` (`link`)
) ENGINE=InnoDB AUTO_INCREMENT=4127834 DEFAULT CHARSET=utf8;

任何帮助将不胜感激

最佳答案

我已经解决了这个问题。 SQLAlchemy 将 title 列作为 str 而不是 Unicode 返回。我认为将 encoding='utf8' 作为参数添加到 create_engine 会解决这个问题,但是,正确的做法是在数据库 URI 中传递它: mysql://me@myserver/mydatabase?charset=utf8 .

感谢您的所有回答!

关于python - SQLAlchemy 和 UnicodeDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972363/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com