zoukankan      html  css  js  c++  java
  • 中文 json_encode之后字符长度问题

    问题描述:

    将某个字符串$str 进行json编码,即json_encode($str)后变成Unicode字符存入数据库,会发现中文的长度明明没有超过设置的字符长度最大值,但是却抛出字段长度过长错误;
    查看数据库发现该字段的汉字字符被转义成一些特殊的数字字母串(非unicode字符)

    问题原因:

    MySQL 仅支持从基本的多语种平面字符 (0×0000-0xFFFF)。请尝试存储一个同义词相反:)
    MySQL 5.5.3 以上 (其中尚未 GA), 支持补充字符如果您使用 UTF8MB4 编码。
    json_encode中文的时候,会把每个中文字符encode成“uxxxx”, 而存进数据库的时候,“”被屏蔽了,直接变成”uxxxx”

    如何解决:

    • 方法一: php5.4版本可以json_encode($str,JSON_UNESCAPED_UNICODE)来避免中文汉字被转化成unicode。但是如果汉字中存在" "字符串,取数据后json_decode(str)会转化失败;

    • 方法二: json_encode(urlencode($str)) 将汉字先进行urlencode();然后json_encode();
      取数据后urldecode();即:json_encode(urlencode($str)) 从数据库取出来:urldecode($str)

    • 方法三: $str = json_encode($str);

      $test= addslashes( $str ); //或

      $test= mysql_escape_string( $str );

  • 相关阅读:
    documentFragment文档碎片
    OpenResty之resty.limit.count 模块介绍
    vue前端分页多条件搜索
    element ui Tree树形控件获取未全选父节点和子节点id
    如何使 pdf 文件在浏览器里面直接下载而不是打开
    关于本博客
    圆锥曲线基础知识点
    NOI2021游记
    20210716模拟赛
    计数+动态规划
  • 原文地址:https://www.cnblogs.com/xinxinmifan/p/11672158.html
Copyright © 2011-2022 走看看