Я чувствую, что это должно быть простым решением, но ответ ускользает от меня. Я попробовал поискать в Google и искать здесь … безрезультатно.
У меня есть длинный текст, хранящийся в моей базе данных.
Параметры сортировки — «latin1_swedish_ci», и когда я вижу их в базе данных, они сохраняются правильно. Например:
string= Sally was walking one day and saw Tom. Tom said "Hi, Sally!" Sally's response was "Hi, Tom."
каждый «или» отображается в виде белого вопросительного знака на черном бриллианте.
я бы хотел
$result=mysqli_query($db,"SELECT string FROM Table WHERE 1")
while($row = mysqli_fetch_assoc($result)){
echo $row['string'];
}
и пусть все персонажи появятся.
кто-нибудь может помочь?
Вы можете исправить это с помощью этого примера.
SQL:
CREATE TABLE `test` ( `id` int (11) NOT NULL AUTO_INCREMENT, `string` longtext, ПЕРВИЧНЫЙ КЛЮЧ (`id`) ) ENGINE = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = latin1; INSERT INTO `test` VALUES ('1', 'Салли шла однажды и увидела Тома. Том сказал \" Привет, Салли! \ ". Ответ Салли был \" Привет, Том. \ "');
PHP:
$query = "SELECT id, string FROM test WHERE id = 1";
if ($result = mysqli_query($link, $query)) {
while ($row = mysqli_fetch_assoc($result)) {
echo $row['string'];
}
mysqli_free_result($result);
}
mysqli_close($link);
Один знак вопроса является одним из симптомов; цепочка вопросительных знаков — другая; и черный бриллиант со знаком вопроса — еще одна проблема. Очистите планшет … Избавьтесь от всех функций кодирования и …
CHARACTER SET utf8
, а такжеCHARACTER SET utf8
, а также<meta charset=UTF-8>
,Проведя еще какое-то исследование, я нашел пост, который раньше не появлялся.
Это решение аналогичной проблемы было предложено Эмилем Н:
MySQL выполняет преобразования набора символов на лету во что-то
называется кодировка соединения. Вы можете указать эту кодировку, используя
SQL заявлениеУСТАНОВИТЬ ИМЕНА utf8 или использовать определенную функцию API, такую как
mysql_set_charset ():mysql_set_charset («utf8», $ conn); Если это сделано правильно, нет
необходимо использовать такие функции, как utf8_encode () и utf8_decode ().Вы также должны убедиться, что браузер использует ту же кодировку.
Обычно это делается с помощью простого заголовка:заголовок (‘Content-type: text / html; charset = utf-8’); (Обратите внимание, что
charset называется utf-8 в браузере, но utf8 в MySQL.)В большинстве случаев кодировка соединения и веб-кодировка являются единственными
вещи, которые вы должны отслеживать, так что если это все еще не работает
вероятно, что-то еще ты делаешь неправильно. Попробуйте поэкспериментировать
с этим немного, обычно требуется время, чтобы полностью понять.shareedit отредактировал 25 марта 2009 г. в 12:17 ответил 25 марта 2009 г. в 11:52
Эмиль Н 28к75778
Прочитав это, я посмотрел php-код, о котором он / она говорил, и обнаружил, что существует sqli-эквивилиант с другим синтаксисом.
(PHP 5> = 5.0.5, PHP 7)
mysqli :: set_charset — mysqli_set_charset — устанавливает клиентский набор символов по умолчанию
Описание ¶
Объектно-ориентированный стиль
bool mysqli :: set_charset (строка $ charset)
Процедурный стиль
bool mysqli_set_charset (mysqli $ link, строка $ charset)
Устанавливает набор символов по умолчанию, который будет использоваться при отправке данных с и на сервер базы данных.
Надеюсь, это поможет всем, у кого возникла проблема.