【问题标题】:How to convert hex escaped characters to unicode characters?如何将十六进制转义字符转换为 unicode 字符?
【发布时间】:2013-10-09 13:16:44
【问题描述】:

我正在修改旧的 Emacs / Gnus 配置,该配置可以追溯到 unicode Emacs(21.3 或 22)之前。在这个配置中,我使用了一些 unicode 字符来显示 usenet 线程:

  (setq gnus-sum-thread-tree-root "\x490a4 ")     ; "> "
  (setq gnus-sum-thread-tree-false-root "\x490a4 ") ; "> "
  (setq gnus-sum-thread-tree-indent " ") ; "  "
  (setq gnus-sum-thread-tree-single-indent "") ; ""
  (setq gnus-sum-thread-tree-leaf-with-other "\x4903c\x49020\x4904c\x490f9 ") ; "+-> "
  (setq gnus-sum-thread-tree-vertical "\x49022 ") ; "| "
  (setq gnus-sum-thread-tree-single-leaf "\x490b0\x49020\x490f9 "))   ; "\\-> "

但现在使用 Emacs 23.2.1,我看到的是空方块而不是弯曲的箭头。我怀疑它可能是字体集或与单字节/多字节相关的转义问题。

要排除或解决转义问题,如何检索 unicode 字符以使用 \u1234 转义而不是 \x12345 ?谢谢。

编辑:感谢 Emacs-22,我能够将这些字符插入缓冲区并使用 CuCx=。

对应的是

(setq gnus-sum-thread-tree-root "\u2564 "
        gnus-sum-thread-tree-false-root "\u2564 "
        gnus-sum-thread-tree-leaf-with-other "\u251c\u2500\u252c\25b9 "
        gnus-sum-thread-tree-vertical "\u2502 "
        gnus-sum-thread-tree-single-leaf "\u2570\u2500\u25b9 "))

...但是显示效果不如选择那些 unicode 字符时那么好。它在另一个系统上,我想字体更好地显示它们。

【问题讨论】:

    标签: emacs unicode elisp gnus


    【解决方案1】:

    理论上(decode-coding-string "\x490a4 " 'emacs-mule) 应该做你想做的事,但它似乎无法识别那个字符,可能是因为它是从 MULE 扩展来支持更多 Unicode 字符的。

    我认为最简单的解决方案是在视觉上找到您想要的箭头,并将这些代码替换为它们的 Unicode 代码点。请参阅 Wikipedia 中的 Arrows (Unicode block) 以获取潜在候选人列表。

    【讨论】:

    • 感谢您的提示,我经常使用 Emacs 处理文本编码/转换,但我不太了解内部结构。我确认我的 Emacs 与具有古代编码中的转义字符的 Emacs-22 相比没有给出正确的结果。
    【解决方案2】:

    我建议你启动一个较旧的 Emacs (Emacs-22),让它显示那些字符串,这样你就可以看到那些漂亮的弯曲箭头,然后用鼠标复制和粘贴它们(不需要使用 \uNNN 符号)。

    【讨论】:

    • 我重新安装了旧的 Emacs-22 以便能够正确解码字符。正如 JSON 提到的,我当前的 Emacs 无法正确获取它们。
    猜你喜欢
    • 2014-12-22
    • 2013-02-07
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2017-05-16
    相关资源
    最近更新 更多