Страница 1 из 1

'ascii' codec can't encode characters in position 0-4: ordi

Добавлено: 30 сен 2016, 17:45
madw0lf
собственно, в заголовке та проблема, с которой я ковыряюсь весь день. где-то я таки накосячил с установкой экспериментальных модулей.. сейчас эта фигня вылетает при попытке воспользоваться инструментарием GRASS 7

Код: Выделить всё

 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
ubuntu 16.04
qgis 2.16.3

Re: 'ascii' codec can't encode characters in position 0-4: o

Добавлено: 30 сен 2016, 17:52
gamm
русские имена в путях и именах фалов (и прочие подобные символы) уберите, и будет вам щастье :-)

Re: 'ascii' codec can't encode characters in position 0-4: o

Добавлено: 30 сен 2016, 19:12
madw0lf
спасибо. попробую.
*оффтоп* день какой-то сегодня, наперекосяк всё.

Re: 'ascii' codec can't encode characters in position 0-4: o

Добавлено: 30 сен 2016, 20:12
jerry-maori
а вот и ниобязательно...
у меня такое сыпалось прям в наскозь англоязычной среде (ибо у XRDP переклочение раскладкок включается не вот прям очевидно), но когда в атрибутике есть русские символы.
Причём QGIS сам честно говорит, что кодировка атрибутики UTF8, на geoserver тоже есть UTF8 локали (в т.ч. RU и EN), а когда в дело вступает Python - что-то идёт не так...
Парни пишуть, что надо Python'у ещё мозги в плане локалей вправлять - но добивать проблему в тут момент стало неакутально...

Re: 'ascii' codec can't encode characters in position 0-4: o

Добавлено: 01 окт 2016, 16:28
madw0lf
Семён Семёныч! (из Бриллиантовой руки)
поля кириллицей были записаны.

Re: 'ascii' codec can't encode characters in position 0-4: o

Добавлено: 01 окт 2016, 17:59
gamm
ну дык - я еще в 80-е годы усвоил, что использование русских букв внутри нерусских программ (где либо, кроме данных) гарантированно ведет к проблемам

Re: 'ascii' codec can't encode characters in position 0-4: o

Добавлено: 01 окт 2016, 18:23
jerry-maori
This error occurs when you pass a Unicode string containing non-English characters (Unicode characters beyond 128) to something that expects an ASCII bytestring. The default encoding for a Python bytestring is ASCII, "which handles exactly 128 (English) characters". This is why trying to convert Unicode characters beyond 128 produces the error.
Так что 'то косяк Python так то.. на дворе 21 век... есть жи UTF8

Код: Выделить всё

import sys  
reload(sys)  
sys.setdefaultencoding('utf-8')