【问题标题】:Can't get json_encode to work with database entry [duplicate]无法让 json_encode 与数据库条目一起使用 [重复]
【发布时间】:2016-01-13 14:21:40
【问题描述】:

无论我做什么,我似乎都无法让 json_encode 处理我的 fr 列返回的结果。

这是我的表格的导出:mctrivia.com/language.zip

我按照谷歌搜索这个问题的建议将所有内容设置为 utf8mb4,但没有运气。

如果 $language 是 'en' 并且 $fileID=1 这有效。 如果 $language 是 'fr' 并且 $fileID=1 则失败。

无论哪种方式,print_r 都会给出正确的结果。回声用 fr 显示为 null。

    //get list of words in current language file
    $query='SELECT `key`,`' . $language . '` FROM `language` WHERE `file`=' . $fileID;
    $stmtGetWords = $conn->prepare($query);
    $stmtGetWords->bind_result($wordID,$text);
    $stmtGetWords->execute();
    $wordList=array();
      while ($stmtGetWords->fetch()) {
        $wordList[$wordID]=$text;
    }
    print_r($wordList);
    $stmtGetWords->close();

    //create json file data
    $fileData=json_encode($wordList);
    echo '<br>'. $fileData . '<br>';

来自语言 en 的结果:

Array ( [lang] => English [subPage1Intro] => Welcome to sub page 1. ) 
{"lang":"English","subPage1Intro":"Welcome to sub page 1."}

语言 fr: 的结果

Array ( [lang] => Fran�ais [subPage1Intro] => Bienvenue � sous page 1. ) 

【问题讨论】:

  • 您能否在问题中添加必要的信息?在这种情况下,print_r 的结果。
  • 将结果添加到问题中。
  • 你是怎么得到这两个结果的? print_r 是什么变量?还有这个方法在做什么“$stmtGetWords->bind_result($wordID,$text);”
  • JSON 必须是 utf-8 编码,法语文本似乎不是 utf8。这就是为什么你can't get it to work
  • @KhorneHoly:正要说同样的话。如果 ç 没有正确加载或显示,它就无法工作!

标签: php json mysqli


【解决方案1】:

您的法语文本不包含有效的 JSON,因为它不是 UTF-8!您可以在wikipedia page 上找到更多信息。

只要您的 JSON 包含正确的 UTF-8,它就会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 2016-04-25
    相关资源
    最近更新 更多