я получаю сообщение об ошибке в системе производства, что я не в состоянии воспроизвести в среде разработки:Как воспроизвести UnicodeEncodeError?
with io.open(file_name, 'wt') as fd:
fd.write(data)
Исключение:
File "/home/.../foo.py", line 18, in foo
fd.write(data)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 6400: ordinal not in range(128)
Я уже пытался, но много странных символов в переменную data
.
Но до сих пор я не смог воспроизвести UnicodeEncodeError
.
Что должно быть в data
, чтобы получить UnicodeEncodeError
?
Обновление
python -c 'import locale; print locale.getpreferredencoding()'
UTF-8
Обновление2
Если я называть locale.getpreferredencoding()
с помощью оболочки и с помощью веб-запроса, кодировка "UTF-8".
Я обновил обработку исключений в своем коде и зарегистрировал getpreferredencoding()
с некоторых дней. Теперь это произошло снова (до сих пор я не могу заставить или воспроизвести это), а кодировка - «ANSI_X3.4-1968»!
Я понятия не имею, где эту кодировку получает набор ....
Это ставит мою проблему в другое направление. Оставляя этот вопрос бесполезным. Моя проблема сейчас: где изменится предпочтительная кодировка? Но это не часть этого вопроса.
Большое спасибо, для всех, кто
вы знаете, без какой-либо дополнительной информации, которая позволяет нам воспроизвести проблему (вы знаете, [MCVE]), нет никаких других ответов дать. Я очень скептически отношусь к тому, что * только с кодом, который вы указали *, что 'locale.getpreferredencoding()' действительно UTF-8 *, когда вы нажимаете эту ошибку *. –
Вы также можете просто проверить кодировку, выбранную для файла; 'io.TextIOWrapper' имеет атрибут' encoding'. Он будет установлен в ASCII в этом конкретном случае. –