Encoding 哪种编码使用\x(反斜杠x)前缀?

Encoding 哪种编码使用\x(反斜杠x)前缀?,encoding,internationalization,Encoding,Internationalization,我正在尝试解码以\x作为某些“特殊字符”前缀的文本。我已经手工计算出了以下映射: \x28 ( \x29 ) \x3a : e.g. 12\x3a39\x3a03 AM 有人知道这个编码是什么吗?它是。所有四个字符 \xst < /C++ >的所有转换都转换为1个字符,其ASCII代码为“代码> ST (in),其中 S/和 T< 为 012345 67 89ABCFDABCDFF < /> > .< /P> < P> > XAB < /COD>符号用于C、C++、Perl和其他

我正在尝试解码以\x作为某些“特殊字符”前缀的文本。我已经手工计算出了以下映射:

\x28   (
\x29   )
\x3a   :

e.g. 12\x3a39\x3a03 AM

有人知道这个编码是什么吗?

它是。所有四个字符<代码> \xst < /C++ >的所有转换都转换为1个字符,其ASCII代码为“代码> ST <代码>(in),其中<代码> S/<代码>和 T< <代码>为<代码> 012345 67 89ABCFDABCDFF < /> > .< /P> < P> > XAB < /COD>符号用于C、C++、Perl和其他语言,C语言提示,作为在字符串中间表示十六进制字符代码的一种方法。< /P> 当反斜杠后面有数字时,符号
'\007'
表示字符代码使用八进制

在C99及更高版本中,您还可以使用
\uabcd
\U00abcdef
对Unicode字符进行十六进制编码(需要4和8个十六进制数字;
\U
中的前两个十六进制数字必须是
0
才有效,第三个数字通常也是
0
1
是唯一的其他有效值)

注意,在C中,八进制转义限制为最多3位,但十六进制转义不限于2或3位;十六进制转义以非十六进制数字的第一个字符结束。在问题中,顺序是
“12\x3a39\x3a03”
。这是一个包含4个字符的字符串:
1
2
\x3a39
\x3a03
。用于4位十六进制字符的实际值由实现定义。为了获得所需的结果(使用
\x3A
表示冒号
),代码必须使用字符串连接:

"12\x3a" "39\x3a" "03"

它现在包含8个字符:
1
2
3
9
0
3
,我猜您处理的是一个unicode字符串,它的编码方式与发送到的输出流不同。即,一个utf-16字符串输出到latin-1设备。在这种情况下,某些字符将作为转义值输出,以避免向输出设备发送控制字符或错误字符。这至少在python中发生。

我用它来做这类事情


如果您从收藏夹列表中输入配方,它将告诉您转换情况以及您可以使用的内容。

您只需在交互式Python解释器中将此类文本置于引号中即可轻松解码。@PaulFisher您能提供一个确切的提示吗?@Imray在控制台中,运行“Python”(或“ipython”),然后在提示下,键入['12\x3a39\x3a03 AM'](即括号之间的所有内容,包括引号,但不包括括号)。奇怪的是,我尝试使用'\x9fX#''.\x9f',并保持如下状态@PaulFisher@RevolucionforMonica这是因为在您的例子中,
\x9f
不是可打印的Unicode字符,而是控制字符“应用程序命令“.Python在打印字符串的
repr
时将转义不可打印的字符。请注意,很可能\x3a39是一个单独的单元-无论如何,它都是C。如果字符串是宽字符串,则它可能适合单个字符;在8位字符串中,它会溢出,插入的值可能未定义(最多实现定义)。因此,我的问题是@lostlogic,如何获得本应发送的原始编码。我也有类似的问题