PHP mb_substr()无法正常工作?

PHP mb_substr()无法正常工作?,php,string,utf-8,multibyte,mbstring,Php,String,Utf 8,Multibyte,Mbstring,此代码 打印mb_substr('xxx',0,1) 打印空白:( 它应该打印第一个字符,é。但这似乎可行: 打印mb_substr('xxx',0,2); 但这是不对的,因为(0,2)表示2个字符…尝试将编码参数传递给mb_substr,如下所示: print mb_substr('éxxx', 0, 1, 'utf-8'); 编码永远不会被自动检测。实际上,我发现,在某些系统中,多字节函数的内部编码默认为ISO-8859-1。这实际上破坏了它们处理多字节文本的能力 设置良好的默认值可能会解

此代码

打印mb_substr('xxx',0,1)

打印空白:(

它应该打印第一个字符,
é
。但这似乎可行:

打印mb_substr('xxx',0,2);


但这是不对的,因为(0,2)表示2个字符…

尝试将编码参数传递给mb_substr,如下所示:

print mb_substr('éxxx', 0, 1, 'utf-8');

编码永远不会被自动检测。

实际上,我发现,在某些系统中,多字节函数的内部编码默认为ISO-8859-1。这实际上破坏了它们处理多字节文本的能力

设置良好的默认值可能会解决此问题和其他一些问题:

mb_internal_encoding('UTF-8');

编码永远不会被自动检测,它总是默认值。如果你真的尝试检测编码,这会是一个更好的主意吗?@AlvinWong不。知道你使用的是什么编码,没有其他方法了。@Alvin Wong,那会更正确,是的,但我也可以说,除了utf-8之外,任何东西都可以考虑使用d冒险和边缘:)好的,那么不把
的“utf-8”
传递给所有
mb.*
函数怎么样?正如阿尔瓦罗·G·维卡里奥所指出的那样