sublime text控制台用ord()查ascii值:选中单字符后执行print([ord(c) for c in view.substr(view.sel()[0])])得十进制码点,如a→[65];多字符用print(" ".join([hex(ord(c)) for c in "hello"]))得十六进制,如0x48 0x65;注意编码、全角字符及不可见字符影响结果。

用 Python 控制台快速查单字符 ASCII 值
Sublime Text 没有内置“查 ASCII”按钮,但它的控制台就是现成的 Python 解释器,ord() 函数能秒出结果。
- 选中你要查的那个字符(只能一个,比如
A或中) - 按
Ctrl + `打开控制台 - 输入
print([ord(c) for c in view.substr(view.sel()[0])])并回车
返回的是十进制数值:比如 A → [65],0 → [48]。注意它只对选中内容生效,多选或空选会报错 IndexError。
查多个字符或批量转十六进制
如果想一次看一串字符的 ASCII 十六进制表示(比如调试协议头),直接在控制台改一行就行:
- 输入
print(" ".join([hex(ord(c)) for c in "Hello"])) - 输出类似
0x48 0x65 0x6c 0x6c 0x6f
这里 hex() 返回带 0x 前缀的字符串,ord() 是关键——它不认编码层,只按当前文件解码后的 Unicode 码点算。所以如果文件是 GBK 编码却用 UTF-8 打开,ord("中") 可能返回乱码对应的错误码点,不是你想要的 20013(U+4E2D)。
为什么不能直接用状态栏或插件“一键查”
因为 ASCII 本质是字节值,而 Sublime 处理的是解码后的 Unicode 字符。状态栏显示的是文件编码(如 UTF-8),不是字符的码点;插件如 ASCIIUtility 也只是封装了 ord() 调用,并没绕过这个底层逻辑。
- 插件安装后通常绑定快捷键,但光标未选中时可能返回空或默认字符
- 某些插件对非 ASCII 字符(如中文、emoji)返回 Unicode 码点(十进制),不是传统 ASCII 范围(0–127)内的值
- 真正需要 ASCII 字节值的场景(比如写串口协议),得先确认文件保存为
Western (Windows 1252)或纯 ASCII 编码,否则"A"在 UTF-8 里占 1 字节,在 UTF-16 里占 2 字节,ord()给的仍是码点,不是字节
常见误操作和排查线索
看到奇怪数字?别急着怀疑插件,先看这三点:
- 选中的是全角字符吗?
A(全角大写 A)的ord()是65345,不是65;可用正则[\uFF00-\uFFEF]匹配全角范围 - 文件编码是否正确?右下角状态栏显示
UTF-8,但实际是 GBK 写入的,打开后"你好"变成乱码,此时ord()查的是乱码字符,不是原意 - 复制粘贴进控制台时有没有带不可见字符(如 BOM、零宽空格)?它们也会被
ord()计算进去,导致数组长度 >1 或值异常
真要盯字节,不如把文本另存为 UTF-8 无 BOM 格式,再用命令行 xxd -g1 file.txt 对照看——Sublime 的 ord() 给的是语义码点,不是原始字节流。










