Русское сообщество Sublime Text

Основной раздел => Дополнения => Тема начата: jevin от Октября 07, 2014, 07:55:39

Название: Кириллица в плагине
Отправлено: jevin от Октября 07, 2014, 07:55:39
Пытаюсь написать плагин, который будет заменять одни символы на другие в выделенном тексте.
Но возникает проблема, если эти символы из кириллицы

пример 1
заменяем a на b
работает

# -*- coding: utf-8 -*-
import sublime, sublime_plugin, json
import re

class EncodeJson(sublime_plugin.TextCommand):
    def run(self, edit):
        selection = self.view.sel()[0]
        result = self.view.substr(selection)
        result = re.sub(r'a', r'b', result)
        self.view.replace(edit, selection, result)


пример 2
меняем ф на f
не работает - в консоле пише "no command for selector: noop:"

# -*- coding: utf-8 -*-
import sublime, sublime_plugin, json
import re

class EncodeJson(sublime_plugin.TextCommand):
    def run(self, edit):
        selection = self.view.sel()[0]
        result = self.view.substr(selection)
        result = re.sub(r'ф', r'f', result)
        self.view.replace(edit, selection, result)


пример 3
меняем h на ч
возникает ошибка

Traceback (most recent call last):
  File "./sublime_plugin.py", line 362, in run_
  File "./EncodeJson.py", line 9, in run
    result = re.sub(r'a', r'ч', result)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/re.py", line 151, in sub
    return _compile(pattern, 0).sub(repl, string, count)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)


# -*- coding: utf-8 -*-
import sublime, sublime_plugin, json
import re

class EncodeJson(sublime_plugin.TextCommand):
    def run(self, edit):
        selection = self.view.sel()[0]
        result = self.view.substr(selection)
        result = re.sub(r'h', r'ч', result)
        self.view.replace(edit, selection, result)


Название: Re: Кириллица в плагине
Отправлено: jevin от Октября 07, 2014, 08:04:30
-