Emacs 如何将十六进制转义字符转换为unicode字符?

Emacs 如何将十六进制转义字符转换为unicode字符?,emacs,unicode,elisp,gnus,Emacs,Unicode,Elisp,Gnus,我正在修改unicode Emacs(21.3或22)之前的旧Emacs/Gnus配置。在此配置中,我使用了一些unicode字符来显示usenet线程: (setq gnus-sum-thread-tree-root "\x490a4 ") ; "> " (setq gnus-sum-thread-tree-false-root "\x490a4 ") ; "> " (setq gnus-sum-thread-tree-indent " ") ; " "

我正在修改unicode Emacs(21.3或22)之前的旧Emacs/Gnus配置。在此配置中,我使用了一些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,我看到的是空的正方形,而不是弯曲的箭头。我怀疑这可能是一个fontset或与单字节/多字节相关的转义问题

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

编辑:多亏了Emacs-22,我才能够将这些字符插入缓冲区,并用C-uC-x=找到它们的代码

相应的是

(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(Emacs-22),让它显示那些字符串,这样你就可以看到那些漂亮的曲线箭头,然后用鼠标复制并粘贴它们(无需使用
\uNNN
符号)。

理论上
(解码编码字符串“\x490a4”“emacs mule)
应该执行您想要的操作,但它似乎无法识别该字符,可能是因为它是mule的扩展,支持更多Unicode字符


我认为最简单的解决方案是直观地找到所需的箭头,并用它们的Unicode代码点替换这些代码。请参阅维基百科中的潜在候选人列表。

我重新安装了一个旧的Emacs-22,以便能够正确解码字符。正如JSON提到的,我当前的Emacs无法正确获取它们。感谢您的提示,我经常使用Emacs来处理文本编码/转换,但我对其内部结构了解不多。我确认我的Emacs与Emacs-22相比,没有给出正确的结果,Emacs-22使用了古代编码中的转义字符。