Amazon RDS, UTF-8 Unicode проблема с PHP - PullRequest
1 голос
/ 22 марта 2012

Я использую Amazon RDS, и мне трудно читать данные из базы данных.Результаты отображаются как не-utf символы и, следовательно, с кодировкой utf-8 в БД они отображаются как плохие символы.

БД была перенесена из другой базы данных MySQL (не Amazon RDS), и когда код связываетсяс этой базой данных все в порядке.

Я проверил набор символов и сопоставления для всех таблиц, а также для самой БД - UTF-8 и utf_general_ci

Страницы используют utf-8кодировка, подобная этой

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Я также пытался передать этот запрос "SET NAMES utf8", но это не помогло.

Я заметил, что у кого-то еще была такая же проблема с RDS

Невозможно сохранить UTF-8 в RDS, несмотря на настройку новой группы параметров с использованием Rails на Heroku

И решение, которое им было дано, заключалось в указании набора символов в строке подключенияЭто решение, очевидно, работало для рельсов, но в PHP я не думаю, что есть такая вещь, как строка подключения.

Это то, как я подключаюсь к mysql

mysqli_connect($this->host, $this->login, $this->pw, $this->database)

Также, если яизмените тип данных этих столбцов на двоичные типы данных, такие как BLOB, они будут работать правильно.

1 Ответ

2 голосов
/ 22 марта 2012

То, что вы ищете вместо строки подключения, скорее всего mysqli :: set_charset () , которая изменит ваш клиентский набор символов по умолчанию;

if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
    printf("Current character set: %s\n", $mysqli->character_set_name());
}
...