У меня есть метод, который возвращает следующее сообщение об ошибке (проблема в акцентах)
ошибка urlopen [Errno 10061] Невозможно установить соединение, так как конечный компьютер явно отклонил соединение
При попытке сделать json.dumps в python я получаю сообщение об ошибке:
'ascii' codec can't decode byte .....
Я знаю, что это не ошибка json, потому что она отмечает то же самое при вызове метода печати, но я не смог
Я старался:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
variable.encode("utf8")
Как я могу получить строку с акцентами и использовать json.dumps()
?
Прочитав много о юникоде и джанго, я понял, что:
Мне нужно изменить первую строку на unicode, что я и делаю с помощью следующего кода:
При этом у меня это в юникоде с набором символов latin1
Поскольку мне нужен ответ json в django в json.dumps, я передаю параметр sure_ascii=False, а затем выполняю кодировку
Если вы можете перейти на Python 3.x, стандартная кодировка — utf-8, а все строки по умолчанию — unicode, поэтому у вас не будет этой проблемы.
В python 2.x стандартной кодировкой является ascii, что означает, что она будет давать вам ошибки с акцентами, знаками и т. д. Вы можете изменить кодировку по умолчанию на любую, включив следующий код (при условии, что вы хотите utf-8) :
В файле, который находится в пути поиска Python и который обязательно должен называться
sitecustomize.py
. Этот файл может быть создан или еще не создан, в зависимости от вашего дистрибутива и обстоятельств, поэтому сначала найдите свою систему и создайте/отредактируйте его соответствующим образом.