Как я могу успешно использовать символы UNICODE в моих файлах .py без проблем? - PullRequest
4 голосов
/ 12 июля 2011

Я пишу тест для базы данных, в которой есть шведские символы. В тесте я непосредственно использую символы с умлаутами и другими такими шведскими лигатурами, и он работает просто отлично, считывая имена файлов из базы данных и успешно сравнивая строки.

Однако, после импорта этого файла для генерации pydoc, я получаю слишком знакомое исключение:

SyntaxError: Не-ASCII символ '\ xc3' в файле foo.py в строке 1, но кодировка не объявлена; см http://www.python.org/peps/pep-0263.html для подробностей

Проведя собственное расследование, я обнаружил, что добавление

# -*- coding: iso-8859-15 -*-

к началу моего файла исправлена ​​проблема импорта. Тем не менее, теперь тест не проходит все сравнения строк. Я попробовал альтернативный метод отказа от декларации кодирования и записи строк как

u"Bokmärken"

... но это все еще не удерживает тест от провала.

Кто-нибудь знает хороший способ исправить это?

1 Ответ

10 голосов
/ 12 июля 2011

Вам необходимо установить кодировку в редакторе и базе данных так, чтобы они совпадали. Если ваша база данных имеет кодировку utf-8, а не iso-8859-15, то установка вашего редактора на utf-8 должна исправить это. Однако, поскольку ваши сравнения не удаются, это может быть не так.

Заменить

# -*- coding: iso-8859-15 -*-

с

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

или (эквивалент)

# coding=utf-8

Чтобы попробовать кодировку utf-8.

Печать результатов отладки с repr('swedish string' и repr(u'swedish string') также будет полезна при проверке различий. Сразу после вашей строки переводчика. Можете ли вы сказать нам, какая кодировка вашей базы данных установлена? Кроме того, были ли данные базы данных написаны Python или вставлены напрямую? Для начала вы могли записать данные в неправильной кодировке в базу данных, что теперь вызывает проблемы при сравнении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...