Пытаюсь написать плагин, который будет заменять одни символы на другие в выделенном тексте.
Но возникает проблема, если эти символы из кириллицы
пример 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)