我在我的计算机上使用 Windows 10家庭单一语言版这是 64位操作系统。
我已经安装了最新版本的 XAMPP ,它在我的机器上安装了 PHP 7.2.6 。
的段落中看到了以下句子我理解PHP Manual段落的大部分内容。但是,我并不理解我在下面提到的同一段落的最后一句话。
但是,请注意,状态相关的编码所在的字节相同 可以在初始和非初始移位状态中使用值 有问题的。
我在标题为Details of the String Type
的段落中提到了以下问题答案 0 :(得分:4)
某些编码具有字节标记,用于选择如何解释下一个字符(直到下一个标记)。
所以,例如在"日语"之后标记下一个字符被解释为日文字符(但例如每个字符2个字节),在标记" latin"之后,字符被解释为latin1。
因此,为了解码字符串,应该保持状态(例如,它是实际的解释)。
在上面的"示例"中,一个字节可以被解释为日语或Latin1,具体取决于状态。最初一个字符串有一个默认状态,但如果你带一个子字符串,你会错过"标记",所以字符串将被解释(可能),解释错误。
因此,应该复制状态(标记)并在每个子字符串的开头添加前缀。
ISO 2022定义了一种实现此类编码的方法,您将在维基百科文章中找到各种实现https://en.wikipedia.org/wiki/ISO/IEC_2022。
现在这样的编码已经过时了。 Unicode已经超越了它们(特别是2022是常见的,所以编码是一个巨大的问题。注意:UTF-8也依赖于状态(对于字符/代码点中的字节),但是实现了UTF-8,状态将被重置为每个字符(字符的第一个字节都有一个预定义的范围).Unicode也保留一些状态,但不建议在unicode中使用它(如文本方向:左右:这些应该最好通过更高的编码来设置)级别(例如HTML),而不是阻止unicode方向代码。)