了解二进制字符串定界符

Understanding binary String delimiters

我对

编码之间的区别感到困惑

我一直在研究 https://convertcodes.com/unicode-converter-encode-decode-utf/,似乎 UTF-16 使用 \u 而 UTF-8 使用 \x,但我从其他来源读到\x 不特定于 UTF-8,\u 不特定于 UTF-16。有什么区别,两种编码都可以使用这两个定界符吗?此外,这个问题的标题是否正确?这些可以称为二进制定界符吗?示例字符串(\x68\x65\x6c\x6c\x6f\u0068\u0065\u006c\u006c\u006f)是否被视为二进制字符串、BLOB 或其他?这些类型的字符串的正确名称是什么?

一切完全取决于谁来解释它,因此意味着最少的上下文:

  • JSON 只知道 \u(未绑定到特定的 UTF 编码)并且总是需要 4 位数字,不知道 \x,并且必须包含字符串文字在 "double quotation marks".
  • 只有在使用 "double quotation marks" 用于字符串文字。
  • MySQL knows neither of those escape sequences, and String literals can either be in 'single quotation marks' or "double quotation marks". One must use hexadecimal literals分别。这与使用的任何编码无关。
  • C++ knows \x (expecting 2 digits), \u (expecting 4 digits) and \U (expecting 8 digits), which in conjunction with a String's literal prefix 然后根据编码有不同的结果。字符串文字总是在 "double quotation marks" 中,单字符文字总是在 'single quotation marks'.
  • Perl regular expressions 知道 \x(期望 2 位数字)和 \N(期望代码点)。不同的 RegEx 风格有不同的支持,有些还接受 4 位数字的 \x。大多数 \x 绑定到输入编码(有时隐含在 UTF-8 的 u 修饰符中)。

另请参阅:什么是 String literal