如何在json中存储日文字符
我试图保存一个json_encoded字符串到数据库,但每当我做到这一点:
u30abu30bf
保存时:
カタ
我如何解码这样的事情?
尝试php utf8_decode和编码,但我似乎并没有工作,我也尝试阅读下面的线程:
使用unicode字符的PHP解码和编码json
难以通过json_encode传递日文字符(UTF-8)
在将它作为参数传递之前,这里是一个$ flex_encoded的var_dump数据:
//this one seems to passing the right encoding
[{"japanese_name":"u30cau30abu30cd"},{"japanese_name":"u30cau30abu30cd"}]
这里是函数调用:
$this->updateFlexData($game_id, $flex_encoded);
这里是更新我的数据库的功能:
function updateFlexData($game_id, $json_data)
{
$arrVal = array(
'json_data'=> $json_data,
);
Db::getInstance()->autoExecute('japanese_names', $arrVal, 'UPDATE', " game_id = '".$game_id."'", false);
}
数据库的列类型是:
`json_data` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
我的PHP版本:
PHP版本5.3.10
试试JSON_UNESCAPED_UNICODE
json_encode($data, JSON_UNESCAPED_UNICODE);
而不是这个u7537u6027u304cu5f7cu5973u306bu7740u3066...
你会得到男性が彼...
经过几个小时的代码修补我以某种方式使其工作:确定其可能不是解决方案,但:
当我继续存储json_data这个内容(下面)从数据库结果解码json_data解析错误,因为额外的“ 引用
$japanese_name = json_encode($japanese_text); //returns "u30cau30abu30cd"
我只是删除了“ 从各方面使它只是 u30ca u30ab u30cd ,然后继续存储在数据库
$jp = str_replace(""","",$japanese_name); //returns u30cau30abu30cd