Эхо из базы данных в сопоставлении & quot; latin1_swedish_ci & quot; приводит к символам вопросительного знака на веб-странице

Я чувствую, что это должно быть простым решением, но ответ ускользает от меня. Я попробовал поискать в 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'];
}

и пусть все персонажи появятся.
кто-нибудь может помочь?

0

Решение

Вы можете исправить это с помощью этого примера.

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);
0

Другие решения

Один знак вопроса является одним из симптомов; цепочка вопросительных знаков — другая; и черный бриллиант со знаком вопроса — еще одна проблема. Очистите планшет … Избавьтесь от всех функций кодирования и …

  • Иметь данные в клиенте в кодировке utf8, и
  • Установите, что соединение CHARACTER SET utf8, а также
  • Пусть таблицы / столбцы будут CHARACTER SET utf8, а также
  • На HTML-страницах используйте <meta charset=UTF-8>,
0

Проведя еще какое-то исследование, я нашел пост, который раньше не появлялся.
Это решение аналогичной проблемы было предложено Эмилем Н:

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)
Устанавливает набор символов по умолчанию, который будет использоваться при отправке данных с и на сервер базы данных.

Надеюсь, это поможет всем, у кого возникла проблема.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector