我对编码之间的差异感到困惑
\x
表示,比如\x68\x65\x6c\x6c\x6f
vs.\u
的,例如 \u0068\u0065\u006c\u006c\u006f
。我一直在玩 https://convertcodes.com/unicode-converter-encode-decode-utf/,似乎 UTF-16 使用 \u
,UTF-8 使用 \x
,但我从其他来源读到 {{ 1}} 并非特定于 UTF-8,而 \x
并非特定于 UTF-16。有什么区别,两种编码都可以使用这两个分隔符吗?此外,这个问题的标题是否正确?这些可以称为二进制分隔符吗?示例字符串(\u
和 \x68\x65\x6c\x6c\x6f
)是否被视为二进制字符串、BLOB 或其他内容?这些类型的字符串的正确名称是什么?
答案 0 :(得分:1)
一切都完全取决于解释它的人,因此意味着最少的上下文:
\u
(未绑定到特定的 UTF 编码)并且总是需要 4 位数字,不知道 \x
,并且字符串文字必须包含在 { {1}}。"double quotation marks"
字符串文字。\x
或 \u
中。必须单独使用 hexadecimal literals。这与使用的任何编码无关。"double quotation marks"
(期望 2 位数字)、'single quotation marks'
(期望 4 位数字)和 "double quotation marks"
(期望 8 位数字),它们与 {{3 }} 然后根据编码有不同的结果。字符串字面量始终在 \x
中,单个字符字面量始终在 \u
中。\U
(需要 2 位数字)和 "double quotation marks"
(需要代码点)。不同的 RegEx 风格有不同的支持,有些还接受 4 位数字的 'single quotation marks'
。大多数情况下 \x
绑定到输入编码(有时用 \N
修饰符暗示 UTF-8)。另见:什么是 Perl regular expressions。