【发布时间】:2014-02-27 08:50:31
【问题描述】:
我缺少其他文本编辑器经常提供的一项有用功能。在底部状态栏中,它们显示当前字符的 ASCII 和 UTF 代码 - 当前位置之前或之后的字符(现在不确定)。我找不到执行此操作的包或执行此操作的本机功能。
感谢您的帮助。
【问题讨论】:
我缺少其他文本编辑器经常提供的一项有用功能。在底部状态栏中,它们显示当前字符的 ASCII 和 UTF 代码 - 当前位置之前或之后的字符(现在不确定)。我找不到执行此操作的包或执行此操作的本机功能。
感谢您的帮助。
【问题讨论】:
我为此做了一个插件:)
在您的Packages/User/ 目录中创建一个anyname.py 文件。
import sublime, sublime_plugin, textwrap, unicodedata
class utfcodeCommand(sublime_plugin.EventListener):
def on_selection_modified(self, view):
# some test chars = $ €
sublime.status_message('Copying with pretty format')
selected = view.substr(view.sel()[0].a)
char = str(selected)
view.set_status('Charcode', "ASCII: " + str(ord(selected)) + " UTF: " + str(char.encode("unicode_escape"))[2:-1])
这应该会在插入符号右侧字符的状态栏中显示 ASCII 和 Unicode 代码。
告诉我这是否适合您,在 Kubuntu Linux 12.04 x64 上使用 ST3 进行了测试。 由于 Python 版本不同,可能无法在 ST2 上运行。
【讨论】:
【讨论】:
我在使用 Sergey Telshevsky 在 ST2 / Python 2.7 中发布的代码时遇到了几个问题:
由于# some test chars = $ €,我得到了SyntaxError: Non-ASCII character '\xe2' in file ./display_character_code.py on line 7 - 删除此注释掉的代码,或在 Python 代码的顶部声明字符编码,例如# -*- coding: UTF-8 -*- 摆脱了错误。在选择样本“€”时,我也得到了UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac'(因为它不是 ASCII 字符)。即使在修复了这些问题之后,Unicode 密钥也从未显示过;例如状态栏显示ASCII: 123 UTF:。所以我修改了他的例子并提出了以下内容:
import sublime_plugin
class statusCharCodes(sublime_plugin.EventListener):
def on_selection_modified(self, view):
selected = view.substr(view.sel()[0].a)
try:
ascii = str(ord(selected.encode("ascii"))).zfill(3)
except:
ascii = "n/a"
try:
utf = "U+" + str(format(ord(selected),"x")).zfill(4).upper()
except:
utf = "n/a"
view.set_status("Charcode", "ASCII: " + ascii + " UTF: " + utf)
示例输出:
【讨论】: