【发布时间】:2023-03-20 17:15:01
【问题描述】:
请看一下这个:
$str = '¡hola!'; // '¡' is the spanish opening exclamation mark
echo $str{0}; // prints nothing
echo $str{1}; // prints �
echo $str{2}; // prints h
php 脚本具有 UTF-8 编码,执行它的结果与 apache 模块或 CLI 相同。 PHP版本:5.4.6
为什么我会得到这个奇怪的结果?
【问题讨论】:
-
看起来¡是一个多字节字符..为什么要通过
[]访问它? -
多字节字符串。
¡是一个双字节字符 [00A1],这就是为什么第一个字节没有得到任何东西,而第二个字节是垃圾。 -
@Peter 不是浏览器编码问题,用 [] 或 {} 索引字符串不是多字节安全的。