中国語の文字の長さの問題json_encode後

問題の説明:

これは、json_encode($ strの)は、データベースに格納されたUnicode文字になった後、あなたは中国人の長さを見つけること、文字列$ strののJSONエンコーディングになります文字の長さが最大値を超え、明らかではありませんが、フィールドが長すぎるスローエラーです;
漢字データベースフィールドが特別な英数字の文字列(ではないUnicode文字)にエスケープされて参照してください。

問題の原因:

MySQLは、基本的な平面の多言語文字(0×0000-0xFFFF)をサポートしています。逆の同義語を保存してみてください:)
のMySQL 5.5.3より上(まだGAなかった)、補助文字のサポートを使用すると、UTF8MB4コーディングを使用している場合。
json_encode中国は各漢字は「「\ uXXXXという」にエンコードし、析出したデータベースに、「」ブロックされた、直接に」uXXXXというときます

どのように解決するために:

  • 方法の一つ:php5.4版は中国語の文字はUnicodeに変換さを避けるために($ strの、JSON_UNESCAPED_UNICODEを)json_encodeすることができます。「\ T」の文字列がデータ内に存在する場合は、json_decode(STR)失敗した変換されますを取得。
  • 方法2:json_encode(でurlencode($ strの) ) の文字がでurlencode()されるように、その後、json_encode();
    すなわち:json_encode(でurlencode($ strの);)(URLデコードデータを取った後 ) データベースから取り出し:urldecode($ strを)

  • 方法3:$ strの= json_encode($ strの);

    $テスト=にaddslashes($ strの); //または

    $テスト= mysql_escape_string($ strの);

おすすめ

転載: www.cnblogs.com/xinxinmifan/p/11672158.html