欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

使用json_encode获取中文unicode的问题

程序员文章站 2022-06-11 15:01:46
...
简单的数据库查询程序,数据库表里的中文保存的是中文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

如果我直接echo,浏览器显示是空,直接放到sql句子里面发现是带{ }的json数据格式

贴出来看看!



$str_input = "go南京trip";
$str_query = trim(json_encode($str_input), '"');

echo "unicode: ", $str_query;

?>

chrome里面输出 unicode:

终于搞定了,多谢xuzuning