我在我的计算机上使用 Windows 10 Home Single Language Edition,这是一个 64 位操作系统。
我已经安装了最新版本的 XAMPP,它已在我的计算机上安装了 PHP 7.2.6。
我在 PHP 手册
的段落中看到以下句子我从PHP手册理解了该段落的大部分内容。但是,我不明白我在下面提到的同一段落中的最后一句话。
但是请注意,状态相关的编码中相同的字节 可以在初始和非初始移位状态下使用的值可以是 有问题。
我在标题为字符串类型的详细信息
的段落中提出了以下问题某些编码具有字节标记,用于选择如何解释下一个字符(直到下一个标记)。
所以例如在“日语”标记之后,接下来的字符被解释为日语字符(但例如每个字符 2 个字节),在标记“拉丁”之后,字符被解释为 latin1。
因此,要解码字符串,应该保留状态(例如,它是实际的解释)。
在上面的“示例”中,一个字节可以解释为日语或拉丁语1,具体取决于状态。最初,字符串具有默认状态,但如果您采用子字符串,您将错过“标记”,因此该字符串将被(可能)以错误的解释来解释。
因此,应该复制状态(标记)并在每个子字符串的开头添加前缀。
ISO 2022 定义了一种实现此类编码的方法,您将在维基百科文章中找到各种实现https://en.wikipedia.org/wiki/ISO/IEC_2022。
现在这样的编码已经过时了。 Unicode 已经超越了它们(特别是在 2022 年很常见的地方,因此编码是个大问题。注意:UTF-8 也是状态相关的(对于字符/代码点内的字节),但是 UTF-8 的实现是状态将在每个字符(并且字符的第一个字节有一个预定义的范围)。Unicode 还保留了一些状态,但不鼓励在 unicode 中使用它(例如文本方向:右和左:这些最好由更高的编码设置级别(例如 HTML),而不是不鼓励使用 unicode 方向代码)。