什么是';无效的代码单元序列';在PHP中?如何';无效的代码单元序列';是否在htmlspecialchars()中工作?需要它的例子吗

什么是';无效的代码单元序列';在PHP中?如何';无效的代码单元序列';是否在htmlspecialchars()中工作?需要它的例子吗,php,encoding,character-encoding,html-entities,htmlspecialchars,Php,Encoding,Character Encoding,Html Entities,Htmlspecialchars,所以,我总是需要特定于PHP的答案,而不是考虑PHP以外的技术所给出的一般答案 我在运行Windows 10 Home单语言64位操作系统的笔记本电脑上使用的是PHP 7.3.3 我已经在我的笔记本电脑上安装了最新版本的XAMPP安装程序,它安装了Apache/2.4.38(Win64)和php7.3.3 今天,我在描述标志参数的可能值时遇到了以下文本: 标志 以下一个或多个标志的位掩码,用于指定 如何处理引号、无效代码单元序列和使用的 文档类型。默认值为ENT|ENT|HTML401 从上面的

所以,我总是需要特定于PHP的答案,而不是考虑PHP以外的技术所给出的一般答案

我在运行Windows 10 Home单语言64位操作系统的笔记本电脑上使用的是PHP 7.3.3

我已经在我的笔记本电脑上安装了最新版本的XAMPP安装程序,它安装了Apache/2.4.38(Win64)php7.3.3

今天,我在描述
标志
参数的可能值时遇到了以下文本:

标志

以下一个或多个标志的位掩码,用于指定 如何处理引号、无效代码单元序列和使用的 文档类型。默认值为ENT|ENT|HTML401

从上面的文本中,我不明白在PHP中,无效代码单元序列实际上是什么意思

我也没有得到无效代码单元序列的定义、解释或示例

我恳请您提供一些无效代码单元序列的好例子

另外,请向我解释无效代码单元序列的这种现象如何与内置函数
htmlspecialchars()
一起工作

我们将珍视附有适当工作代码示例的答案


谢谢。

字符串可能包含无效的代码单元的原因可能很少。要理解为什么会这样,您首先需要理解代码单元是什么,以及它与代码点有何不同

Unicode标准定义了一个代码点列表,简单来说,这意味着您需要的每个字符都应该有一个定义良好的ID。因此,代码点是Unicode标准中特定字符的唯一标识符。它在17个平面上定义了1114112个代码点

Unicode可以通过不同的字符编码来实现。Unicode标准定义了UTF-8、UTF-16和UTF-32,并且使用了其他几种编码。最常用的编码是UTF-8、UTF-16和UTF-16的前身UCS-2。每个编码将生成不同的代码单元,对特定代码点进行编码

一个字节中可以存储的最大数量是255,您可以看到代码点的数量远远超过了一个字节中可以存储的最大数量。这就是上面提到的多字节编码的用武之地。我建议在空闲时间多读一些关于UTF-8的文章,但为了简单起见,我将从现在开始只讨论UTF-8


UTF-8是一种可变长度编码。这意味着编码字母
A
例如,您只需要1个字节,而不是例如
参见了解字符集和编码的一些基础知识。答案很简单:它是一些字节的组合,在给定的编码中无效(“没有意义”),PHP字符串处理和编码的基础都没有根本改变。这仍然是非常好的信息。@PHPNut您最好不要轻易忽略deceze所说的任何内容。您将很难在这里找到更多了解PHP的人。您必须指向特定的手册页面,这些页面记录了您认为在这些领域发生了重大变化的内容。我不久前告诉过您,PHP的大型Unicode计划没有成功,PHPNut: