【问题标题】:What does it mean by 'state-dependent encodings'? What does it mean by 'same byte values'? What does mean by 'initial and non-initial shift states'?“状态相关编码”是什么意思? “相同的字节值”是什么意思? “初始和非初始移位状态”是什么意思?
【发布时间】:2018-07-10 16:51:15
【问题描述】:

我在我的机器上使用 Windows 10 家庭单一语言版,这是一个 64 位操作系统

我已经安装了最新版本的 XAMPP,它已在我的机器上安装了 PHP 7.2.6

我从PHP Manual的段落中看到以下句子

我理解了PHP Manual 的大部分段落。但是,我不明白我在下面提到的同一段的最后一句话。

但是,请注意,相同字节的状态相关编码 值可用于初始和非初始移位状态 有问题。

我在标题为 Details of the String Type 的段落中提出了以下问题

  1. 在这种情况下,“状态相关编码”是什么意思?
  2. 在这种情况下,“初始和非初始移位状态”是什么意思?
  3. 在这种情况下,可以在上述“初始和非初始”移位状态中使用的“相同字节值”是什么意思? 4.如何在“初始和非初始移位状态”中使用相同的字节值?如何解决问题?

【问题讨论】:

    标签: php string encoding character-encoding php-7


    【解决方案1】:

    某些编码具有字节标记,用于选择如何解释下一个字符(直到下一个标记)。

    例如在“日文”标记之后,下一个字符被解释为日文字符(但例如每个字符 2 个字节),在标记“拉丁”之后,字符被解释为 latin1。

    所以要解码一个字符串,应该保持状态(例如,它是实际的解释)。

    在上面的“示例”中,一个字节可以解释为日语或拉丁语1,具体取决于州。最初一个字符串有一个默认状态,但是如果你取一个子字符串,你会错过“标记”,所以字符串会被解释(可能)错误的解释。

    所以应该复制状态(标记)并在每个子字符串的开头添加前缀。

    ISO 2022 定义了一种实现这种编码的方法,您将在维基百科文章中找到各种实现https://en.wikipedia.org/wiki/ISO/IEC_2022

    现在这样的编码已经过时了。 Unicode 已经超越了它们(特别是在 2022 很常见的地方,所以编码是个大问题。注意:UTF-8 也依赖于状态(对于字符/代码点内的字节),但实现了 UTF-8,状态将在每个字符(并且字符的第一个字节具有预定义的范围)。Unicode 也保留一些状态,但不鼓励在 unicode 中使用它(如文本方向:左右:这些最好由更高的编码设置级别(例如 HTML),而不是使用不鼓励的 unicode 方向代码)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 2012-02-10
      • 2020-07-17
      • 1970-01-01
      相关资源
      最近更新 更多