PHP-数据库结果编码



我有以下函数来获取语言字符串,它适用于英语字符,但不适用于葡萄牙语字符。

public function GetAllLanguageStrings($langid)
    {
        $GLOBALS['mysqli']->query("use " . $GLOBALS['db_name']);
        $stmt = $GLOBALS['mysqli']->prepare("SELECT lang_identifier, text FROM lang_strings WHERE lang_id = ?");
        $stmt->bind_param("i", $langid); 
        $stmt->execute();
        $stmt->bind_result($identifier,$text);
        $result = array("LangStrings" => array());
       while ($stmt->fetch()) {
            array_push($result['LangStrings'], array("Identifier" => $identifier, "Text" => $text));
        }
        return json_encode($result, JSON_PRETTY_PRINT);
        $stmt->close();
    }

结果是

{ "Identifier": "LOGIN_INFORMATION", "Text": "Informau00e7u00f5es de Login." }

而不是

{ "Identifier": "LOGIN_INFORMATION", "Text": "Informações de Login." }

我尝试添加以下设置:

$mysqli->query("SET NAMES utf8");
$mysqli->query("SET CHARACTER SET utf8");
$mysqli->set_charset("utf8");

但一切都没有改变。

JSON_UNESCAPED_UNICODE标志可能就是您想要的。

有关json_encode如何输出数据以及如何通过设置正确的标志来操作输出的详细信息,请参阅此解释。

return utf8_decode(json_encode($result, JSON_UNESCAPED_UNICODE));

最新更新