如何在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
    
  • 链接地址: http://www.djcxy.com/p/47797.html

    上一篇: How to store a Japanese Character in json

    下一篇: encode to create strings