1

这是在字符串数据类型http://php.net/manual/en/language.types.string.php下的 php 手册中找到的内容

鉴于 PHP 没有规定字符串的特定编码,人们可能想知道字符串文字是如何编码的。例如,字符串“á”是否等同于“\xE1”(ISO-8859-1)、“\xC3\xA1”(UTF-8、C 形式)、“\x61\xCC\x81”(UTF-8 , D 形式)或任何其他可能的表示?答案是字符串将以其在脚本文件中编码的任何方式进行编码。因此,如果脚本是用 ISO-8859-1 编写的,则字符串将以 ISO-8859-1 编码,依此类推。但是,如果启用 Zend Multibyte,则不适用;在这种情况下,脚本可以以任意编码(明确声明或检测到)编写,然后转换为特定内部编码,然后将用于字符串文字的编码。请注意,脚本的编码(或内部编码,如果 Zend Multibyte 启用)有一些限制——这几乎总是意味着这种编码应该是 ASCII 的兼容超集,例如 UTF-8 或 ISO-8859 -1。但是请注意,在初始和非初始移位状态中可以使用相同字节值的状态相关编码可能会出现问题。

你能简单地解释一下这是什么意思吗?谢谢

4

1 回答 1

1

鉴于 PHP 没有规定字符串的特定编码,人们可能想知道字符串文字是如何编码的。例如,字符串“á”是否等同于“\xE1”(ISO-8859-1)、“\xC3\xA1”(UTF-8、Cform)、“\x61\xCC\x81”(UTF-8、 D 形式)或任何其他可能的表示?答案是字符串将以其在脚本文件中编码的任何方式进行编码。因此,如果脚本是用 ISO-8859-1 编写的,那么字符串很快就会用 ISO-8859-1 编码。

这部分声明说,如果您的网页以(UTF-8,C 形式)编码,则“á”将等同于“\xC3\xA1”,您在 php.ini 中指定编码,它是您的 php 脚本的配置文件。

但是,如果启用 Zend Multibyte,则不适用;在这种情况下,脚本可以以任意编码(明确声明或检测到)编写,然后转换为特定内部编码,然后将用于字符串文字的编码。请注意,脚本的编码(或内部编码,应启用 Zend Multibyte)有一些限制——这几乎总是意味着此编码应该是 ASCII 的兼容超集,例如 UTF-8 或 ISO-8859 -1。但是请注意,在初始和非初始移位状态中可以使用相同字节值的状态相关编码可能会出现问题。

在这里他们只是说还有另一个选项来指定你的编码,但现在你是在一个脚本中做的,但你的编码必须与 ASCII 超集兼容

于 2012-12-05T07:07:03.090 回答