PHP从Mysql查出来的数据转换成json格式中文乱码怎么解决

PHP从Mysql查出来的数据转换成json格式中文乱码怎么解决,第1张

解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:

//urlencode处理

function json_array($obj) {

    foreach($obj as $key => $value) {

        if(is_array($obj[$key])) {

            $obj[$key] = json_array($obj[$key]);

        }else{

            $obj[$key] = urlencode($value);

        }

    }

    return $obj;

}

//urldecode解密转换为中文字符

function _json($obj) {

    return urldecode(json_encode(json_array($obj)));

}

echo _json($json);//$json为你要输出的json数组

此处递归调用是为了处理多维数组······

json_encode 后 中文会变的,然后你直接url解码肯定是乱的,你的json_decode后,才能转回去。

就好比你把狗锁在笼子里,然后把笼子放到屋子里,这时你拿狗笼的钥匙去直接开屋子的门,是会有问题的。

用BufferedReader br = new BufferedReader(new InputStreamReader(requestgetInputStream(),"gb2312"));试试

php 中使用 json_encode() 内置函数(php > 52)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);

//结果

//{"a":1,"b":2,"c":3,"d":4,"e":5}

/

下面看一款json_encode中文乱码问题

解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来

/

function arrayrecursive(&$array, $function, $apply_to_keys_also = false)

{

static $recursive_counter = 0;

if (++$recursive_counter > 1000) {

die('possible deep recursion attack');

}

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]);

}

}

}

$recursive_counter--;

}

/

将数组转换为json字符串(兼容中文)

@param array $array 要转换的数组

@return string 转换得到的json字符串

@access public

/

function json($array) {

arrayrecursive($array, 'urlencode', true);

$json = json_encode($array);

return urldecode($json);

}

$array = array

(

'name'=>'希亚',

'age'=>20

);

echo json($array);

//应用实例

$servname="localhost";

$sqlservname="root";

$sqlservpws="123456";

$sqlname="lock1";

$db=mysql教程_connect($servname,$sqlservname,$sqlservpws) or die("数据库教程连接失败");

mysql_select_db($sqlname,$db);

$sql = "select from t_operater";

$result =mysql_query($sql);

$rows = mysql_num_rows($result);

while($obj = mysql_fetch_object($result))

{

$arr[] = $obj;

}

echo '({"total":"'$rows'","results":'json_encode($arr)'})';

以上就是关于PHP从Mysql查出来的数据转换成json格式中文乱码怎么解决全部的内容,包括:PHP从Mysql查出来的数据转换成json格式中文乱码怎么解决、php读取中文数据转json后乱码问题!、phpmysql生成json中文乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9776647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存