2017-02-08 2 views
-4

Я создал приложение Django с python 3.4 на платформе Windows. Теперь я пытаюсь разместить его на экземпляре AWS Linux. Первый раз я столкнулся следующее сообщение об ошибкеDjango: ascii codec не может декодировать байт 0xe2

Non-ASCII символ '\' XE2

Я решил эту проблему, добавив в кодировке UTF на каждой странице.

- - кодирование: UTF-8 - -

Теперь я столкнулся следующее сообщение об ошибке

'ASCII' кодек не может декодировать байт 0xe2 в положении 18: порядковый не в диапазоне (128)

Код:

class TaskTodo: 

    @classmethod 
    def validate_search(cls, form_data): 

     try: 

      search_url = 'https://www.foo.com/s-{search}/page-{page}' 

      url = search_url.format(page=1, search=form_data['keywords']) 
      url = url.encode('utf-8') 

      r = requests.get(url) 

      not_found_text = 'Sorry, but we didn’t find any results. Below you can find some tips to help you in your search.' 

      if not_found_text in r.text.encode('utf-8'): 
       return 

      #after encoding its not working on localhost 
      #'str' does not support the buffer interface 

      if r.status_code == 200: 
       content = r.text 
       soup = BeautifulSoup(content, "html.parser") 
       total = soup.find('span', {"class": 'count'}).text.replace('words', '').replace(',', '').strip() 

       pages = 1 
       last_page = soup.find('a', {"class": 'last follows'}) 

       if last_page: 
        href = last_page['href'].split('/') 
        pages = int(href[len(href) - 1].replace('somewords', '').strip()) 

     except Exception as ex: 
      raise ex 

Я искал и пытался внедрить кодировку и т. Д., Но не работает. Я завершил приложение, и в основном функции выполняют запрос на http, разбор html и т. Д. Его действительно беспокоит, чтобы я отлаживал производственный сервер и кодировал каждую функцию.

Я использую Apache на сервере производства и пытался как с питона версии 2.7 и 3.5

Любая идея, как я могу решить эту проблему. Спасибо

+2

Вам необходимо показать [код, создающий ошибку] ​​(http://stackoverflow.com/help/mcve). – Withnail

+0

может возникнуть проблема с вашим терминалом. Есть ли возможность попробовать в другой среде? Я столкнулся с этим, когда на сервере возникли проблемы с локалью. – Snobby

+0

@Snobby нет, это не проблема –

ответ

1

После работы с OP в чате было еще неясно, откуда возникла настоящая проблема.

Я заметил, что текст 'Sorry, but we didn’t содержит не-ASCII 'RIGHT SINGLE QUOTATION MARK' Поэтому я рекомендовал делать not_found_text в Unicode, прилагая u'' к значению строки.

Я также рекомендовал удалить все ложные .encodes() и .decodes().

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