簡單的資料庫查詢程式,資料庫表裡的中文儲存的是中文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