如何使用Scrapy编码

How use Scrapy encodage

我在使用 Scrapy 时遇到编码问题,希望有人能帮助我。

它的结果字符串类似于 Namontana \xe2\x80\x93 Une attaque \xc3\xa0 main arm\xc3\xa9e avort\xc3\xa9e。我将所有项目保存在数据库中(暂时 mysql)。

现在我想在网站上显示所有这些项目,但我的问题是我无法将 \xe2(例如)转换为视觉字符。

我已经试过了:

目前,我唯一的选择是使用自定义函数替换所有字符(解释 here),但我认为他们有更好的解决方案。

在此先感谢您的帮助。

e28093 是 EN DASH 的 utf8 编码的十六进制:http://www.fileformat.info/info/unicode/char/2013/index.htm

c3a0 和 c3a9 代表重音字母:

mysql> SELECT UNHEX('e28093c3a0c3a9');
+-------------------------+
| UNHEX('e28093c3a0c3a9') |
+-------------------------+
| –àé                     |
+-------------------------+

我不知道是什么提供了“\x”,但这是十六进制的常见前导符。

如果 SELECT 出现 \x 等,那么这不是存储数据的好方法。如果 SELECT HEX(column) 得出 ...e28093...,那很好。

问题来自我的数据库编码。现在是 utf8_unicode_ci,效果很好。

我的解决方案是添加

# -*- coding: utf-8 -*-

在每个文件(蜘蛛、管道等)上并将(在管道上)字符串从 unicode 转换为 utf8 [.encode( 'utf-8', 'replace' )]