PHP - База данных результатов кодирования?

1

У меня есть следующая функция для получения языковых строк, она отлично работает для английского, но не для португальских символов.

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": "Informa\u00e7\u00f5es 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");

но ничего не изменилось.

Теги:
encoding

2 ответа

1
Лучший ответ

Флаг JSON_UNESCAPED_UNICODE может быть тем, что вы ищете.

Пожалуйста, обратитесь к этому объяснению для получения подробной информации о том, как json_encode выводит данные и как управлять результатом, устанавливая правильные флаги.

  • 0
    лучше, чем раньше, но все же: {"Identifier": "LOGIN_INFORMATION", "Text": "Informaçîçes de Login."},
  • 0
    хорошо ли текст хранится как utf8 im the db?
Показать ещё 2 комментария
0
return utf8_decode(json_encode($result, JSON_UNESCAPED_UNICODE));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню