前天在做一个功能,往数据表插入一个json数据,发现数据竟然是这样

{"transport":"u5965u8fea","reason":"u6e9cu5b8c"}

中文自动被转码了,于是百度了下,找到了几种解决办法

1.要求php5.4版本以上

<?php

echo json_encode("中文", JSON_UNESCAPED_UNICODE);

2.

function decodeUnicode($str){

return preg_replace_callback('/\\u([0-9a-f]{4})/i',

    create_function(

        '$matches',

        'return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");'

    ),

    $str);

}

$array = array("transport"=>"英菲尼迪","reason"=>"出差");

$json = decodeUnicode(json_encode($array));

然后插入数据表,读取的时候

$array_new = (array)json_decode($json);

print_r($array_new);