答案1
如果 shell 变量、dash、mksh 或 bash 中有这些转义序列:
printf %b "$string_with_backslash_escapes"
这不是 POSIX:说明符是 POSIX,但每个反斜杠后面都%b
需要一个。0
这也解释了其他反斜杠转义:\n
作为换行符、\t
作为制表符等。
这是一个仅转换八进制转义序列的 Perl 单行代码。
perl -pe 's[\\(?:([0-7]{1,3})|(.))] [defined($1) ? chr(oct($1)) : $2]eg'
http://www.rapidmonkey.com/unicodeconverter/reverse.jsp将八进制值解释为 Latin-1 字符,我不知道为什么页面中提到 Unicode 和 UTF-8。我不知道什么http://www.rapidmonkey.com/unicodeconverter/advanced.jsp做。
答案2
仅使用重击:
3.1.2.4 ANSI-C 引用
该形式的单词
$'string'
经过特殊处理。这个词扩展为 细绳,并按照 ANSI C 标准指定的方式替换反斜杠转义字符。反斜杠转义序列(如果存在)按如下方式解码:……
<i>nnn
值为八进制值的八位字符恩恩(一到三位数)
在UTF-8终端中演示:
$ echo $'\350\207\252\345\212\250\346\216'
自动?
最后一个字符显示为问号,因为序列格式错误:仅存在三个必需字节中的两个。
您链接到的网站执行RFC 5137编码/解码。
如果您\u81ea\u52a8
在“ASCII (Unicode Escaped)”文本区域中输入,您将得到自动
输出,因为自
是 Unicode 字符U+81EA(其 UTF-8 表示形式为十六进制的 e8 87 aa,或八进制的 350 207 252)并且动
是 Unicode 字符U+52A8(其 UTF-8 表示为十六进制的 e5 8a a8,或八进制的 345 212 250)。
答案3
交互式 shell 中的 Python 至少可以完成其中的一些工作。但上面的序列似乎已损坏:
wilmer@ruby:~$ python Python 2.7.10(默认,2015 年 7 月 1 日,10:54:53) [GCC 4.9.2] 在 linux2 上 输入“帮助”、“版权”、“制作人员”或“许可证”以获取更多信息。 >>> unicode("\350\207\252\345\212\250\346\216", "utf-8") 回溯(最近一次调用最后一次): 文件“”,第 1 行,位于 UnicodeDecodeError:“utf8”编解码器无法解码位置 6-7 中的字节:数据意外结束 >>> unicode("\350\207\252\345\212\250", "utf-8") 你'\u81ea\u52a8' >>> 打印 unicode("\350\207\252\345\212\250", "utf-8") 自动
答案4
我想补充一点,使用某些软件可能就足够了选择、复制、粘贴转义的文本。例如,Wireshark 将 UTF-8 文本显示为八进制转义字节序列,但是当您将其复制并粘贴到 Gedit 中时,您会得到普通文本,例如 \341\203\231 变成 კ。