Кириллица в интерфейсе python toolbox

0 голосов
спросил 16 Апр, 14 от doujin (2,960 баллов) в категории Программные продукты Esri
В ArcGIS 10.1 при создании python toolbox хочется сделать в нем русский интерфейс. Задаю параметры следующим образом:
param2 = arcpy.Parameter(
displayName=u'Поле для сортировки объектов',
name=u'in_field',
datatype=u'Field',
parameterType=u'Required',
direction=u'Input')
param2.filter.list = [u'Short', u'Long', u'Text', u'OID']
Если сохранять исходный код в кодировке utf-8, то в окне инструмента русские буквы отображаются некорректно.
Приходится сохранять исходный код в кодировке cp1251, тогда все отображается как надо. Можно ли как-то заставить ArcGIS отображать русские буквы без изменения кодировки кода?

3 Ответы

0 голосов
ответил 16 Апр, 14 от Grigoriy (127,020 баллов)
# -*- coding: utf-8 -*-
0 голосов
ответил 17 Апр, 14 от doujin (2,960 баллов)
Волшебный комментарий указан и никак не влияет на результат.
На сколько я понимаю, в интерфейсе инструмента используется стандартная для Windows кодировка cp1251. И я полагал, что получив строку юникод, ArcGIS сам ее приведет к нужной кодировке. Но почему-то он игнорирует тот факт, что строка в юникоде и считает ее строкой байт.
Я пробовал оставить кодировку исходного кода utf-8, а значения для displayName преобразовывать в правильные байты самостоятельно:
ru = lambda s: s.encode(u'cp1251')
param2 = arcpy.Parameter(
displayName=ru(u'Поле для сортировки объектов'),
name=u'in_field',
datatype=u'Field',
parameterType=u'Required',
direction=u'Input')

И оно даже работает, пока не встречает заглавнуть букву "И", ломаясь с ошибкой:
UnicodeEncodeError: 'charmap' codec can't encode character u'\x98' in position 1: character maps to

Похоже, я в чем-то ошибаюсь, но не могу понять в чем.
P.S. Только сейчас заметил, что разместил тему не в том разделе форума. Если возможно, перенесите в ArcGIS for Desktop.
0 голосов
ответил 02 Июль, 14 от doujin (2,960 баллов)
Отвечу сам себе. Исходный код python toolbox нужно сохранять не просто в utf-8, а в utf-8 with BOM. Только так ArcGIS правильно понимает кодировку, в противном случае используется кодировка локали Windows. Магический комментарий игнорируется.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...