将数组转换为utf8编码并不适用于PHP

时间:2015-03-15 19:55:19

标签: php arrays string utf-8

我有str_split分割后的字符串到数组中并使用utf8_encode将其编码为UTF-8然后当我打印数组时它不会打印像Ł这样的特殊字符,下面是我的代码示例。 * .php文件使用UTF-8。

$str = "Łukasz";
$aStr = str_split($str);
$aStr = array_map("utf8_encode",$aStr);
print_r($aStr);

这是结果:Array ( [0] => Ă [1] => Â [2] => u [3] => k [4] => a [5] => s [6] => z ),所以我犯了错误?

此致 帕特里克

1 个答案:

答案 0 :(得分:0)

这是因为str_split函数不兼容unicode。 ASCII字符仅使用1个字节,而unicode字符使用2-4个字符。

在文档中str_split函数的注释中,用户" qeremy"提供了str_split的这个unicode版本:

function str_split_unicode($str, $l = 0) {
    if ($l > 0) {
        $ret = array();
        $len = mb_strlen($str, "UTF-8");
        for ($i = 0; $i < $len; $i += $l) {
            $ret[] = mb_substr($str, $i, $l, "UTF-8");
        }
        return $ret;
    }
    return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
}