PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决

本文介绍了一种解决使用GBK编码的中文字符在通过json_encode转换时出现乱码问题的方法。通过自定义函数arrayRecursive配合urlencode和urldecode实现了对数组内中文字符的正确编码与解码,确保了JSON数据的完整性和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先关于json_encode的gbk中文乱码,创建JSON函数,这一段来自网上某一位大侠

/**************************************************************
 *
*    使用特定function对数组中所有元素做处理
*    @param    string    &$array        要处理的字符串
*    @param    string    $function    要执行的函数
*    @return boolean    $apply_to_keys_also        是否也应用到key上
*    @access public
*
*************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $array[$key] = $function($value);
        }

        if ($apply_to_keys_also && is_string($key)) {
            $new_key = $function($key);
            if ($new_key != $key) {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
            }
        }
    }
}

/**************************************************************
 *
*    将数组转换为JSON字符串(兼容中文)
*    @param    array    $array        要转换的数组
*    @return string        转换得到的json字符串
*    @access public
*
*************************************************************/
function JSON($array) {
    arrayRecursive($array, 'urlencode', true);
    $json = json_encode($array);
    return urldecode($json);
}

连接数据库取值给数组$array1

$dbcnx = @mysql_connect ( "localhost", "root", "1234" );
if (! $dbcnx) {
    echo ("Unable to connect to the " . "database server at this time.");
    exit ();
}

if (! @mysql_select_db ( "pms" )) {
    echo ("Unable to locate the joke " . "database at this time.");
    exit ();
}

mysql_query ( "SET NAMES 'GB2312'" );

    $q=mysql_query("select * from ability where ALV = 1"); 
    while($row=mysql_fetch_array($q)){ 
     $array1[] = $row[AName];
}

数组array1传递到JavaScript给数组ability1

<script type="text/javascript" src="JS/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
var ability1=<?php echo JSON($array1);?>;
var a=eval("ability1");
alert(a[0]);
</script>

转载于:https://www.cnblogs.com/Liangw/archive/2012/09/14/2684360.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值