【问题标题】:Special characters and json_encode特殊字符和 json_encode
【发布时间】:2017-02-27 04:07:21
【问题描述】:

我正在尝试从 mysql 数据库中提取一些信息,然后对其进行 json 编码。我遇到了特殊字符的问题。我将从包含特殊字符的数据库中提取信息,但是当我使用 PHP json_encode 函数时,它无法编码并返回 FALSE。

我已经尝试了以下两种方法。

在我的查询中我有这个:

CONVERT(item_stub.name USING utf8)

这似乎没有任何作用。于是我在查询后添加了以下内容以将数据转换为UTF8:

    while($r = $db->fetch($result)){
      $r[] = array_map('utf8_encode', $r);

这似乎可以处理非 utf8 单引号,但我仍然遇到商标符号的问题。

我也尝试过使用 PHP htmlentities 和 htmlspecialchars 函数,但它们也像 json_encode 一样失败

【问题讨论】:

    标签: php mysql json


    【解决方案1】:

    尝试将ENT_QUOTES 标志添加到htmlspecialchars()。它会像这样为您处理单引号和双引号:

       <?php
    
           while($r = $db->fetch($result)){
              $r[] = array_map(
                      'utf8_encode', 
                       htmlentities(htmlspecialchars($r, ENT_QUOTES, 'UTF-8', true)));
              // CODE CONTINUES... (IF ANY)...
           }
    

    QUICK-TEST THIS:

        $r = "™™™™@†©√∫∫~ªß¥ß∂ƒåßßå∑€ƒ∑€åå€∑€∑ƒ";
        $s = htmlentities(htmlspecialchars($r, ENT_QUOTES, 'UTF-8', true));
        var_dump($s);
        //YIELDS:
        '&trade;&trade;&trade;&trade;@&dagger;&copy;&radic;&int;&int;~&ordf;&szlig;&yen;&szlig;&part;&fnof;&aring;&szlig;&szlig;&aring;&sum;&euro;&fnof;&sum;&euro;&aring;&aring;&euro;&sum;&euro;&sum;&fnof;' (length=196)
    

    【讨论】:

    • 我的问题不再是引号,而是商标符号和重音字符。 @poiz
    • @user2874270 然后将其包装在htmlentities 中,因为更新后的帖子表明...*另请参阅附加的测试链接...*
    【解决方案2】:

    在使用array_map函数之前你必须确定。

    1. 检查您的 PHP 文件编码,它应该是 UTF-8

    2. 使用 PHP 标头(header('Content-Type: text/html; charset=utf-8');)或元 标记 (<meta http-equiv="Content-type" content="text/html; charset=utf-8" />) 以允许文件处理 UTF8 字符。

    3. 在获取信息之前运行SET NAMES 'utf8' sql。

    然后使用 array_map 和 json_encode 函数。它可能会帮助你。

    【讨论】:

      【解决方案3】:

      试试这个

      json_encode($objectSubstitutions, JSON_UNESCAPED_UNICODE)
      

      【讨论】:

        猜你喜欢
        • 2014-01-08
        • 2018-07-16
        • 1970-01-01
        • 2016-12-08
        • 2017-07-12
        • 2015-07-08
        • 1970-01-01
        • 2011-08-12
        • 2015-07-10
        相关资源
        最近更新 更多