Php 变音符号和mb_substr的问题
我正在使用Php 变音符号和mb_substr的问题,php,unicode,substr,multibyte,Php,Unicode,Substr,Multibyte,我正在使用mb_substr函数对unicode字符串进行带变音符号的切片,但它的工作原理与我使用简单的substr函数的工作原理相同。它将unicode字符一分为二,显示带问号的菱形 例如 可能有什么问题?如果我没有将编码指定为最后一个参数,我也会遇到同样的问题:至少在我的服务器上,它默认为ISO-8859-1 但是,如果我正确地将编码设置为UTF-8,它就可以正常工作: echo mb_substr('ááááá', 0, 5, 'UTF-8'); 获取浏览器中的正确显示: ááááá
mb_substr
函数对unicode字符串进行带变音符号的切片,但它的工作原理与我使用简单的substr
函数的工作原理相同。它将unicode字符一分为二,显示带问号的菱形
例如
可能有什么问题?如果我没有将编码指定为最后一个参数,我也会遇到同样的问题:至少在我的服务器上,它默认为
ISO-8859-1
但是,如果我正确地将编码设置为
UTF-8
,它就可以正常工作:
echo mb_substr('ááááá', 0, 5, 'UTF-8');
获取浏览器中的正确显示:
ááááá
见(引用,强调我的):
编码
参数为
字符编码如果是
省略,内部字符
将使用编码值
我也有同样的问题,上面的答案也帮了我。除了设置
php.ini
或使用之外,还可以使用mb_internal_编码('utf-8')
(utf-8
可以根据您的选择替换)用于设置多字节函数的永久编码。内部字符编码可以在php.ini中更改(如果无法在系统范围内更改,甚至可以通过ini_set()进行更改)。我认为这是一个更明智的选择(并且会射杀那个些为专用多字节函数选择单字节默认编码的白痴)。
ááááá
string mb_substr ( string $str , int $start [,
int $length [, string $encoding ]] )