notepad++ 原生不支持鼠标悬停显示字符编码值;可用 python script 插件实现光标停留时在状态栏显示 unicode 码点,或绑定快捷键弹窗查询单字符编码,后者更稳定可靠。

Notepad++ 本身不支持鼠标悬停显示字符编码值
这是个常见误解。Notepad++ 的 UI 层没有内置「hover tooltip 显示当前字符 Unicode/ASCII 值」的功能,无论启用什么插件或设置,原生界面都不会在鼠标悬停时弹出编码信息。
替代方案:用 Python Script 插件 + 自定义脚本实时查编码
需要先安装 Python Script 插件(通过 Plugin Admin 安装),再添加一个监听光标位置变化的脚本。它不能“悬停”,但能做到「光标停在某个字符上时,立刻在状态栏显示其编码值」,体验接近。
- 脚本需监听
SCN_CHARADDED和SCN_CURSORMOVED事件(后者更关键) - 用
editor.getCharAt(editor.getCurrentPos())获取当前光标前的字符 - 注意:若光标在行尾或选区非空,需额外判断位置有效性
- 中文、Emoji 等 Unicode 字符会返回 UTF-16 代理对或完整码点(
ord()可正确处理) - 状态栏显示建议用
notepad.setStatusBar(0, f"U+{ord(c):04X}"),避免中文乱码
更轻量的选择:快捷键触发单字符编码查询
如果不想跑后台脚本,直接绑定一个快捷键执行「获取当前字符编码并弹窗」更稳定可靠。
- 在 Python Script 中新建脚本,内容类似:
pos = editor.getCurrentPos() if pos > 0: c = chr(editor.getCharAt(pos - 1)) notepad.messageBox(f"{c} → U+{ord(c):04X} (dec: {ord(c)})") - 注意减 1:因为
getCurrentPos()返回的是插入点位置,字符在它前面 - 该方式避开悬停逻辑,无兼容性问题,适用于所有 Notepad++ 版本(v7.9+ 测试通过)
- Windows 上若遇到非 BMP 字符(如 ?),
getCharAt()可能只返回代理项之一,此时应改用editor.getWCharAt()(v8.5+ 支持)
别踩坑:别信“启用十六进制插件就能悬停看编码”
Hex Editor 插件只在十六进制视图下生效,且仅显示字节值,和字符编码(尤其是 Unicode 码点)不是一回事。它无法告诉你「这个汉字对应 U+6C49,也不是 0x6C 0x49」——那是 UTF-8 编码字节,不是字符本身的码点。
- UTF-8 / UTF-16 / GBK 同一字符的字节序列完全不同,悬停显示字节 ≠ 显示字符编码
- 状态栏右下角的编码标识(如
UTF-8)只是文件整体编码,和单字符无关 - 第三方插件如
Converter或TextFX也都不提供 hover 编码功能
实际用起来,最稳的还是快捷键查单字符。悬停效果在 Notepad++ 架构里缺乏底层事件支持,硬加容易导致卡顿或崩溃,尤其在大文件中。











