2015-03-19 3 views
1

Я заблокирован проблемой кодирования при использовании Scrapy, надеюсь, что кто-то может мне помочь.Как использовать Scrapy encodage

  • На моем паук: item['title'] = html.xpath('.//h5/text()')
  • На трубопроводе: item['title'] = item['title'].extract()[0].encode('utf-8', 'replace')

Это приводит строку как Namontana \xe2\x80\x93 Une attaque \xc3\xa0 main arm\xc3\xa9e avort\xc3\xa9e. Я сохраняю все элементы в базе данных (mysql пока).

Теперь я хочу показать все эти элементы на веб-сайте, но моя проблема заключается в том, что я не могу преобразовать \ xe2 (например) в визуальный символ.

Я уже попробовать:

  • Добавить # -*- coding: utf-8 -*- в начало всех .py файла
  • Использование htmlentities или utf8_decode функции, когда дисплей с PHP кода
  • Добавить unicode(response.body.decode(response.encoding)).encode('utf-8') на мой паук
  • Add <meta http-equiv="content-type" content="text/html; charset=utf-8" /> к моей странице HTML
  • Проверить и преобразовать весь файл в UTF8 без спецификации

На данный момент единственная моя альтернатива - использовать пользовательскую функцию для замены всех символов (объясните here), но я думаю, что у них есть лучшее решение.

Заранее за вашу помощь.

ответ

0

Мое решение было добавить

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

На каждом файле (пауки, трубопроводы и т.д ..) и конвертировать (по трубопроводу) строки из юникода в utf8 [.encode ('utf8', ' заменить ')]

0

e28093 шестнадцатиричный для кодирования utf8 для смежной DASH: http://www.fileformat.info/info/unicode/char/2013/index.htm

c3a0 и c3a9 представляют акцентированные буквы:

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

Я не знаю, что является предоставление "\ х", но это общий вывод для шестнадцатеричного.

Если SELECT содержит \ x и т. Д., Это не является хорошим способом хранения данных. Если SELECT HEX(column) подходит к ...e28093..., то это хорошо.

0

Проблема возникает из-за моей кодировки БД. Теперь это utf8_unicode_ci, и он отлично работает.

Смежные вопросы