数组转换为UTF-8? PHP JSON [英] Convert arrays into UTF-8 ? PHP JSON

查看:111
本文介绍了数组转换为UTF-8? PHP JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经PHP与数据库中的数据生成多维数组,但我有像字符C C DJ表演Z和当我尝试输出的JSON他只是返回null,我做了一些阅读有关这一点,这说,JSON只能使用UTF-8的工作。所以,我怎么可以转换这些阵列在UTF-8?但我仍然需要在阵列和?

这是我的脚本code

  $ sql_main = mysql_connect(DB_HOST,DB_UNM,DB_PSW);
    ($ sql_main)? mysql_select_db(DB_NM):mysql_error();    $ APP_URL_ACCESS = $ _GET ['app_access_key'];    $ sql_app =的mysql_query(SELECT * FROM app_sys WHERE APP_OW_C ='$ APP_URL_ACCESS')或死亡(mysql_error());    如果(mysql_num_rows($ sql_app)== 1){        而($行= mysql_fetch_array($ sql_app)){
        $ APP_UA_ID = $行['APP_UA_ID'];
        $ APP_NM = $行['APP_NM'];
        $ APP_H_DMN = $行['APP_H_DMN'];
        $ APP_H = $行['APP_H'];
        $ APP_H_DB_UNM = $行['APP_H_DB_UNM'];
        $ APP_DB_N​​M = $行['APP_DB_N​​M'];
        $ APP_H_DB_PSW = $行['APP_H_DB_PSW'];
        $ APP_H_DB_SRV = $行['APP_H_DB_SRV'];
        $ APP_ACTIVE = $行['APP_ACTIVE'];
        $ APP_OW_C = $行['APP_OW_C'];
    }
    $ ROW_APP [] =数组(
                        APP_UA_ID'=> $ APP_UA_ID,
                        APP_PERMISSION'=> $ APP_ACTIVE,
                        APP_KEY'=> $ APP_OW_C);
    $ APP_ARRAY [''] = $ ROW_APP;    ($ APP_ACTIVE =='1')? $ sql_connect_app = mysql_connect($ APP_H_DB_SRV,$ APP_H_DB_UNM,$ APP_H_DB_PSW)及&放大器; mysql_select_db($ APP_DB_N​​M):$ _MSG =应用程序不活跃;    $ sql_news =的mysql_query(SELECT * FROM新闻ORDER BY ID DESC LIMIT 10)或死亡(mysql_error());
    而($行= mysql_fetch_array($ sql_news,MYSQL_ASSOC)){
            // $ display_json ['数据'] =阵列(
                //'ID'=> $行['身份证'],
    //'标题'=> $行['标题'],
        //'故事'=> $行['故事'],
        //'IMG'=> $行['IMG'],
            //'作家'=> $行[作者]
                //'日期时间'=> $行['日期时间'],
                //'shorten_story'=> SUBSTR($行['故事'],0,150)。 '...'); * /            $ ROW_APP_DATA [] = $行;
    //}$ sql_news =的mysql_query(SELECT * FROM实际ORDER BY ID DESC LIMIT 10)或死亡(mysql_error());
而($行= mysql_fetch_array($ sql_news,MYSQL_ASSOC)){
        / * $ display_json ['数据'] =阵列(
            'ID'=> $行['身份证'],
            '标题'=> $行['标题'],
            '故事'=> $行['故事'],
            'IMG'=> $行['IMG'],
            作者= GT; $行[作者]
            '日期时间'=> $行['日期时间'],
            shorten_story'=> SUBSTR($行['故事'],0,150)。 '...'); * /
            $ ROW_APP_THIRDPART [] = $行;
    //}$ JSON_ARRAY_APP ['应用'] = $ ROW_APP;
$ JSON_ARRAY_DATA_1 ['新闻'] = $ ROW_APP_DATA;
$ JSON_ARRAY_DATA_2 ['实际'] = $ ROW_APP_THIRDPART;
$ JSON_ARRAY_DATA ['数据'] = array_merge($ JSON_ARRAY_DATA_1,$ JSON_ARRAY_DATA_2);
$ JSON_OUTPUT = array_merge($ JSON_ARRAY_APP,$ JSON_ARRAY_DATA);
回声json_en code($ JSON_OUTPUT);}其他{
出口();
}


解决方案

我发现的iconv 要转换的字符集设置为UTF-8的最佳方法。您可以使用PHP的 array_walk_recursive 用多维数组的工作:

$阵列=阵列(); //这是您的多维数组array_walk_recursive($阵列功能(安培; $价值$键){
    如果(IS_STRING($值)){
        $值=的iconv('窗口1252','utf-8',$值);
    }
});

您可以修改窗口1252 取其字符集你从转换。

i have multidimensional arrays generated by PHP with data from database ,but i have chars like "č ć š đ ž" and when i try to output that in json he just returns null , i did some reading about that ,and it says that JSON is only working with UTF-8. So how can i convert those arrays in UTF-8 ? but i still need arrays at the and?

here is code of my script

     $sql_main = mysql_connect(DB_HOST, DB_UNM, DB_PSW);
    ($sql_main)? mysql_select_db(DB_NM) : mysql_error();

    $APP_URL_ACCESS = $_GET['app_access_key'];

    $sql_app = mysql_query("SELECT * FROM app_sys WHERE APP_OW_C='$APP_URL_ACCESS'") or die(mysql_error());

    if(mysql_num_rows($sql_app)==1){

        while($row = mysql_fetch_array($sql_app)){
        $APP_UA_ID          = $row['APP_UA_ID'];
        $APP_NM             = $row['APP_NM'];
        $APP_H_DMN          = $row['APP_H_DMN'];
        $APP_H              = $row['APP_H'];
        $APP_H_DB_UNM       = $row['APP_H_DB_UNM'];
        $APP_DB_NM          = $row['APP_DB_NM'];
        $APP_H_DB_PSW       = $row['APP_H_DB_PSW'];
        $APP_H_DB_SRV       = $row['APP_H_DB_SRV'];
        $APP_ACTIVE         = $row['APP_ACTIVE'];
        $APP_OW_C           = $row['APP_OW_C'];


    }
    $ROW_APP[] = array(
                        'APP_UA_ID' => $APP_UA_ID,
                        'APP_PERMISSION' => $APP_ACTIVE,
                        'APP_KEY' => $APP_OW_C);
    $APP_ARRAY[''] = $ROW_APP;



    ($APP_ACTIVE == '1')? $sql_connect_app = mysql_connect($APP_H_DB_SRV, $APP_H_DB_UNM, $APP_H_DB_PSW) && mysql_select_db($APP_DB_NM): $_MSG = "Application Is Not Active"; 

    $sql_news = mysql_query("SELECT * FROM news  ORDER BY id DESC LIMIT 10") or die(mysql_error());
    while($row = mysql_fetch_array($sql_news, MYSQL_ASSOC)){
            //$display_json['data'] = array(
                //'id' => $row['id'],
    //          'title' => $row['title'],
        //      'story' => $row['story'],
        //      'img' => $row['img'],
            //  'author' => $row['author'],
                //'datetime' => $row['datetime'],
                //'shorten_story' => substr($row['story'], 0, 150) . '...'); */

            $ROW_APP_DATA[] = $row; 
    //

}

$sql_news = mysql_query("SELECT * FROM actual  ORDER BY id DESC LIMIT 10") or die(mysql_error());
while($row = mysql_fetch_array($sql_news, MYSQL_ASSOC)){
        /*$display_json['data'] = array(
            'id' => $row['id'],
            'title' => $row['title'],
            'story' => $row['story'],
            'img' => $row['img'],
            'author' => $row['author'],
            'datetime' => $row['datetime'],
            'shorten_story' => substr($row['story'], 0, 150) . '...'); */
            $ROW_APP_THIRDPART[] = $row;    
    //

}

$JSON_ARRAY_APP['application'] = $ROW_APP;
$JSON_ARRAY_DATA_1['news'] = $ROW_APP_DATA;
$JSON_ARRAY_DATA_2['actual'] = $ROW_APP_THIRDPART;
$JSON_ARRAY_DATA['data'] = array_merge($JSON_ARRAY_DATA_1, $JSON_ARRAY_DATA_2);
$JSON_OUTPUT = array_merge($JSON_ARRAY_APP, $JSON_ARRAY_DATA);
echo json_encode($JSON_OUTPUT);

}else{
exit(); 
}

解决方案

I've found iconv to be the best method of converting a character set to UTF-8. You can make use of PHP's array_walk_recursive to work with multidimensional arrays:

$array = array(); // This is your multidimensional array

array_walk_recursive($array, function(&$value, $key) {
    if (is_string($value)) {
        $value = iconv('windows-1252', 'utf-8', $value);
    }
});

You can change windows-1252 to whichever character set you're converting from.

这篇关于数组转换为UTF-8? PHP JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆