Python, кодирующий проблему

Это - порт, используемый сервисом потока маршрутизатора

2
задан 11 August 2011 в 23:10
3 ответа

Вы декодируете строки к unicode с unicode(daten[i][j]). Когда Вы не даете кодирования затем, Python использует системное значение по умолчанию, которое является, вероятно, ASCII, когда Вы запускаете скрипт через крон.

В так или иначе, необходимо дать фактическое кодирование, используемое базой данных. Можно использовать unicode(daten[i][j], dbencoding) вместо этого, или заставьте свой адаптер базы данных давать Вам unicode непосредственно.

Btw: существует, вероятно, миллион инструментов, которые генерируют cvs файлы от запросов базы данных, MySQL имеет это даже встроенное. Ваш код, с другой стороны, довольно хрупок, потому что Вы не делаете никакого выхода вообще.

1
ответ дан 3 December 2019 в 13:18

Я вполне уверен, который является проблемой. MySQL посмотрит на Ваши настройки локали для определения кодировки символов для возвращения значения в. Я также знаю, что латинские символы с умляутами при кодировании в ISO-8859-1 не являются допустимыми символами UTF-8, и любой декодер перестанет работать, если он попытается декодировать их (и без локали устанавливает клиентский модуль дб, может принимать значение по умолчанию к этому). Я не попробовал его, и я не знаю, какую версию Python Вы используете, но гуглите python locale возвращенный эта ссылка: http://docs.python.org/library/locale.html Так. Я попробовал бы

import locale
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')

в самом начале Вашего сценария прежде, чем импортировать Ваш модуль возможности соединения дб и видят, работает ли это.

0
ответ дан 3 December 2019 в 13:18

Хорошо, я теперь узнал, какова проблема. Это не имеет никакого отношения к коду, хорошо хорошо, который был уже ясен прежде, но переменные местного языка являются проблемой.

В задании крона кодировка установлена на POSIX, и в нормальном режиме SHELL кодировка установлена на UTF-8. Таким образом, я изменил кодировку все от UTF-8 до POSIX и запустил мой скрипт. И удивление, та же ошибка происходит как в среде крона. Таким образом, теперь я изменяю кодирование шаг за шагом, я имею в виду переменную переменной и проверяю, работает ли мой сценарий или нет.

Сначала я изменился

экспорт LANG=de_DE.UTF-8

и запуская скрипт та же ошибка осталась. Затем после этого я изменился

экспортируйте LC_CTYPE = "de_DE.UTF-8"

и затем сценарий работавший absolutly штраф. Никакие проблемы.

Таким образом, это - проблема. Теперь, как я заменяю эту переменную в своей среде крона? Я уже попробовал в коде

locale.setlocale(locale.LC_CTYPE, 'de_DE.UTF-8')

Но это не работало.

Как я изменяю это?

0
ответ дан 3 December 2019 в 13:18

Теги

Похожие вопросы