在 UTF-8 中是否有包含字节 \x27 / chr(39) / ' / single-quote-character 的 multi-byte 字符?
in UTF-8 is there any multi-byte character containing the byte \x27 / chr(39) / ' / single-quote-character?
.. 正如标题所说,在 UTF-8 中是否有包含字节 \x27 / chr(39) / ' / single-quote-character 的任何 multi-byte 字符?
您可能想知道为什么有人想知道这个?
好吧,当试图绕过函数
function quoteLinuxShellArgument(string $argument): string {
if(false!==strpos($argument,"\x00")){error it is impossible to quote null bytes in shell arguments}
return "'" . str_replace ( "'", "'\''", $argument ) . "'";
}
我的第一个问题是标题中的那个..有吗?
所有 multi-byte UTF-8 字符都设置了高位,因此不会与常规 ASCII 字符冲突。这包括你的单引号。
在 UTF-8 中,任何超出 ASCII 范围 (U+0000
- U+007F
) 的 Unicode 代码点都需要使用多个字节进行编码。所有这些字节的高位都将设置为 1。
所以不,字节 0x27
(b00100111
) 永远不会出现在 multi-byte 序列中。 0x27
只能用于将代码点 U+0027 APOSTROPHE
编码为单个字节。
.. 正如标题所说,在 UTF-8 中是否有包含字节 \x27 / chr(39) / ' / single-quote-character 的任何 multi-byte 字符?
您可能想知道为什么有人想知道这个? 好吧,当试图绕过函数
function quoteLinuxShellArgument(string $argument): string {
if(false!==strpos($argument,"\x00")){error it is impossible to quote null bytes in shell arguments}
return "'" . str_replace ( "'", "'\''", $argument ) . "'";
}
我的第一个问题是标题中的那个..有吗?
所有 multi-byte UTF-8 字符都设置了高位,因此不会与常规 ASCII 字符冲突。这包括你的单引号。
在 UTF-8 中,任何超出 ASCII 范围 (U+0000
- U+007F
) 的 Unicode 代码点都需要使用多个字节进行编码。所有这些字节的高位都将设置为 1。
所以不,字节 0x27
(b00100111
) 永远不会出现在 multi-byte 序列中。 0x27
只能用于将代码点 U+0027 APOSTROPHE
编码为单个字节。