对于字符串, 有mb_convert_encoding()函数. 可是对于一个数组呢? 难道要循环着用这个函数吗:array_map(
        function($value) use($from, $to) {return mb_convert_encoding($value, $from, $to);}, 
        $input
    );
这样会产生效率问题, 如果一个大数据, 就弱爆了. 
能不能一次处理,有这样的内置函数吗?或者其他的解决方案?

解决方案 »

  1.   

    array_walk、array_walk_recursive 
    但也只是把循环弄到内部去了
    但总还是要比你递归的循环来的快
    你光 array_map 是不行的!要是多维数组就无能为力了
    也可以用迭代器其实字符集只是在输入输出时才会有转换的要求
    输入(比如读数据库),mysql 会给你需要的字符集,不需要自己转换
    输出 可透过 ob_start 完成
    mb_internal_encoding("gbk");  // 假定你的程序是gbk的 
    mb_http_output("utf-8"); // 要输出成 utf-8 的
    ob_start('mb_output_handler'); // 只需这样就可以了其后输出的内容就全部变成 utf-8 的了