我试图将json_encoded字符串保存到数据库,但无论何时我都能得到这个:
u30abu30bf
保存时:
カタ
我如何解码这样的事情?
尝试了php utf8_decode和编码,但我似乎没有工作, 我也试过阅读下面的主题:
difficulty passing Japanese characters(UTF-8) via json_encode
这是$ flex_encoded的var_dump数据,然后将其作为参数传递:
//this one seems to passing the right encoding
[{"japanese_name":"\u30ca\u30ab\u30cd"},{"japanese_name":"\u30ca\u30ab\u30cd"}]
这是函数调用:
$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 Version 5.3.10
答案 0 :(得分:8)
json_encode($data, JSON_UNESCAPED_UNICODE);
而不是\u7537\u6027\u304c\u5f7c\u5973\u306b\u7740\u3066\...
而是男性が彼...
答案 1 :(得分:-1)
经过数小时修补代码后,我以某种方式使其工作: 好吧,它可能不是解决方案但是:
当我继续使用此内容存储 json_data (下面)从数据库结果解码 json_data 时解析错误,因为额外的“引用< / strong>
$japanese_name = json_encode($japanese_text); //returns "\u30ca\u30ab\u30cd"
我刚刚删除了“从各方面只是 \ u30ca \ u30ab \ u30cd 然后继续存储在数据库中
$jp = str_replace("\"","",$japanese_name); //returns \u30ca\u30ab\u30cd