Страница 1 из 1
Qgis + Python + Кириллица + Действия
Добавлено: 16 апр 2013, 04:27
ANAT01
В Qgis нужно повесить действие на открытие файла с кириллическим именем.
OS: Windows 7 x64
Qgis: 1.8 (NextGIS)
Открываю консоль python (Модули > Консоль Python) и пишу
Код: Выделить всё
import os
os.system("notepad " + u"Абырвалг".encode("cp1251"))
Здесь все хорошо и отлично работает.
Захожу в "Действия" для слоя. Выбираю "Приложение Python" и пишу тоже самое один в один.
И тут ошибка:
Код: Выделить всё
При выполнении следующего кода возникла ошибка:
import os
os.system("notepad " + u"Абырвалг".encode("cp1251"))
Traceback (most recent call last):
File "", line 2, in
File "C:\PROGRA~2\Quantum GIS Lisboa\apps\Python27\lib\encodings\cp1251.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to
Где собака зарыта?
Re: Qgis + Python + Кириллица + Действия
Добавлено: 16 апр 2013, 11:15
Максим Дубинин
Возможно у васпросто бардак из кучи версий:
ANAT01 писал(а):Qgis: 1.8 (NextGIS)
ANAT01 писал(а):File "C:\PROGRA~2\Quantum GIS Lisboa\apps\Python27\lib\encodings\cp1251.py", line 12, in encode
Re: Qgis + Python + Кириллица + Действия
Добавлено: 16 апр 2013, 15:47
ANAT01
Максим Дубинин писал(а):Возможно у васпросто бардак из кучи версий:
Вы правы. Действительно сначала был с сайта qgis'а потом поверх поставил nextgis'овскую сборку.
Сейчас удалил старую версию через установка/удаление (папка в program files исчезла).
Также удалил C:\users\%username%\.qgis
Скачал свежую версию NextGIS-QGIS-c64bb9d-22.03.2013.exe
Ничего не поменялось

(
Код: Выделить всё
При выполнении следующего кода возникла ошибка:
import os
os.system("notepad " + u"Абырвалг".encode("cp1251"))
Traceback (most recent call last):
File "", line 2, in
File "C:\NextGIS_QGIS\apps\Python27\lib\encodings\cp1251.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to
Версия Python:
2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]
Версия QGIS:
1.8.0-Lisboa 'Lisboa', exported
Путь поиска Python:
['C:/NextGIS_QGIS/apps/qgis/./python', 'C:/Users/User/.qgis//python', 'C:/Users/User/.qgis//python/plugins', 'C:/NextGIS_QGIS/apps/qgis/./python/plugins', 'C:\\Windows\\system32\\python27.zip', 'C:\\NextGIS_QGIS\\apps\\Python27\\DLLs', 'C:\\NextGIS_QGIS\\apps\\Python27\\lib', 'C:\\NextGIS_QGIS\\apps\\Python27\\lib\\plat-win', 'C:\\NextGIS_QGIS\\apps\\Python27\\lib\\lib-tk', 'C:\\NextGIS_QGIS\\apps\\qgis\\bin', 'C:\\NextGIS_QGIS\\apps\\Python27', 'C:\\NextGIS_QGIS\\apps\\Python27\\lib\\site-packages', 'C:\\NextGIS_QGIS\\apps\\Python27\\lib\\site-packages\\PIL', 'C:\\NextGIS_QGIS\\apps\\Python27\\lib\\site-packages\\win32', 'C:\\NextGIS_QGIS\\apps\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\NextGIS_QGIS\\apps\\Python27\\lib\\site-packages\\Pythonwin', 'C:\\NextGIS_QGIS\\apps\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode', 'C:\\NextGIS_QGIS\\apps\\qgis\\python\\plugins\\fTools\\tools']
Re: Qgis + Python + Кириллица + Действия
Добавлено: 16 апр 2013, 15:56
Максим Дубинин
Забавно, у меня Ubuntu и 1.9
Если я делаю так:
Код: Выделить всё
os.system("gedit " + u"Абырвалг".encode("utf-8"))
то глючит кодировку
если так:
то все окей

Re: Qgis + Python + Кириллица + Действия
Добавлено: 16 апр 2013, 17:52
ANAT01
Да я уж всяко попробовал. Бывает выдает результат, но крякозябры.
У меня познаний нет столько ни в qgis ни в python чтобы решить проблему. Интернеты тоже ничем не помогли.
Похоже придется оставить затею
Re: Qgis + Python + Кириллица + Действия
Добавлено: 16 апр 2013, 19:16
Александр Мурый
А зачем специально задавать кодировку файла CP1251? "ANSI", вроде бы, стандартная Win-кодировка при создании текстовых файлов, нет?
Re: Qgis + Python + Кириллица + Действия
Добавлено: 17 апр 2013, 03:10
doujin
Попробуйте магический комментарий в начале.
Код: Выделить всё
# coding=cp1251
import os
cmd = u'notepad ' + u'Абырвалг'
os.system(cmd.encode(u'cp1251'))
P.S. Вообще, вся эта конструкция напоминает сказку, в которой игла была в яйце, яйцо в утке, утка в зайце и т.д.
Re: Qgis + Python + Кириллица + Действия
Добавлено: 17 апр 2013, 05:23
ANAT01
doujin писал(а):Попробуйте магический комментарий в начале.
Спасибо! Действительно помогло! Только вместо cp1251 нужно использовать utf-8.
Вот рабочий пример:
Код: Выделить всё
# -*- coding: utf-8 -*-
import os
os.system('notepad ' + u'Абырвалг'.encode('cp1251'))
Всем спасибо за помощь!