Home > Article > Backend Development > 使用json_encode获取中文unicode的问题
简单的数据库查询程序,数据库表里的中文保存的是中文unicode编码,例如中国在库里显示的是\u3537\u3456这样,
接收输入的中文是utf-8, 使用json_encode的自动中文转码功能可以获得unicode,可是问题来了,如果从转码后的字符串里获取
unicode呢,请大家帮忙给点思路啊?
例子代码如下
$str_input = "go南京trip"; //待查询的字符串
$str_input = json_encode($str_input);
$str_query = "go\u3537\3642trip";目标字符串
如何从$str_input获取$str_query呢?
什么意思?要把 go\u3537\3642trip 变为 go南京trip ?
http://www.welefen.com/php-unicode-to-utf8.html
,看来我没表达清楚,
我需要的是"go\u3537\3642trip", 即一旦有中文,就将它转化为其对应unicode的字符串,其他字符不变
你是没有说清楚!
1、\u3537\u3456 怎么会是 中国 呢?
你是怎么放进去的?请说一下
2、
$str_input = "go南京trip"; //一定要是 utf-8 的$str_input = iconv('gbk', 'utf-8', $str_input); //不然要转化成 utf-8 的echo json_encode($str_input);//得到 "go\u5357\u4eactrip"$str_query = trim(json_encode($str_input), '"'); //所以这样就得到了
呵呵,unicode代码是瞎编的,抱歉,楼上这位兄弟跟我目前的做法是一样的,但是此时
$str_query是json字符串,{"0":"go\u5357\u4eac\u5730\u94c1trip"}, 我只想要"go\u5357\u4eac\u5730\u94c1trip"。
用json_decode也不行,这时候应该怎么办呢,只能去字符串比较剥出来么?
那你的 $str_input 是数组,不是字符串
你取出值来不就行了?
$str_input = current($str_input);
$str_query = trim(json_encode($str_input), '"');
$str_input = "go南京trip";
$str_query = trim(json_encode($str_input), '"');
echo $str_query;
//得到{"0":"go\u5357\u4eac\u5730\u94c1trip"}
怎么才能从json结构里{"0":"go\u5357\u4eac\u5730\u94c1trip"}获得“go\u5357\u4eac\u5730\u94c1trip”呢
你为啥这样保存呢?DB以utf-8编码不就OK了?
$str_input = "go南京trip";$str_query = trim(json_encode($str_input), '"'); echo $str_query;得到的是 go\u5357\u4eactrip
你为啥这样保存呢?DB以utf-8编码不就OK了?
数据库是不能更改的,表已经存在了,中文数据是以unicode保存的
$str_input = "go南京trip";$str_query = trim(json_encode($str_input), '"'); echo $str_query;得到的是 go\u5357\u4eactrip
贴出来看看!
$str_input = "go南京trip";
$str_query = trim(json_encode($str_input), '"');
echo "unicode: ", $str_query;
?>
chrome里面输出 unicode:
终于搞定了,多谢xuzuning