Emacs 如何读取带有问题修饰符的字符串?

Emacs 如何读取带有问题修饰符的字符串?,emacs,elisp,Emacs,Elisp,我无法在Emacs上读取像“D\xC3\xA9cada”、Década这样的字符串。显然,它试图找到与\xA9cada对应的字符,即有效十六进制,但找不到,返回以下错误: ELISP> "D\xC3\xA9cada" *** Read error *** Invalid modifier in string 有没有办法限制读者在x之外的前两个字符中找到修饰符,或者说是一般的解决方法?在这种情况下,将“\251”替换为“\xA9”会起作用,但字符串“\xA9000”中可能不起作用 谢谢

我无法在Emacs上读取像
“D\xC3\xA9cada”
、Década这样的字符串。显然,它试图找到与
\xA9cada
对应的字符,即有效十六进制,但找不到,返回以下错误:

ELISP> "D\xC3\xA9cada"
*** Read error ***  Invalid modifier in string
有没有办法限制读者在x之外的前两个字符中找到修饰符,或者说是一般的解决方法?在这种情况下,将“\251”替换为“\xA9”会起作用,但字符串“\xA9000”中可能不起作用

谢谢


编辑:最后,我不得不更改字符串生成程序来考虑这一点。每个序列都将附加“\”。在ruby中:
放置string.gsub(/(\\x[0-9A-F][0-9A-F])([0-9A-Fa-F])/,“\1\\\\\2”)
请参见:


您还可以用字符代码表示多字节非ASCII字符:使用十六进制转义“\xnnnnn”,并根据需要使用尽可能多的数字。(多字节非ASCII字符代码都大于256。)任何非有效十六进制数字的字符都会终止此构造。如果字符串中的下一个字符可以解释为十六进制数字,请写入“\”(反斜杠和空格)以终止十六进制转义。例如,“\x8e0\”表示一个带有严重重音的字符“a”。\”在字符串中,常量就像反斜杠换行符;它不会为字符串提供任何字符,但会终止前面的十六进制转义。所以这是一个特性,而不是bug:D