Странные символы при чтении данных из таблицы MySQL

Использую mysql и php.

В моей базе данных у меня есть значение столбца, как показано ниже.

Preaqueça o forno médio (180ºC).

Но когда я получаю его с помощью php, он показывает строку ниже.

Preaqueu00e7a o forno mu00e9dio (180u00baC).

Что-то не так с кодировкой символов. Есть идеи, чтобы это исправить?

0

Решение

У тебя, кажется, есть две проблемы.

ç это моджибаке для ç а также º это моджибаке для º, Для этого вам необходимо проверить:

виден.)

  • Сохраняемые байты должны быть в кодировке UTF-8. Почини это.
  • Соединение при вставке и выделении текста должно указывать utf8 или utf8mb4. Почини это.
  • Столбец должен быть объявлен CHARACTER SET utf8 (или utf8mb4). Почини это.
  • HTML должен начинаться с.

наговор 00e7 выглядит как «кодовая точка Unicode» для ç, но неясно, как вы могли это создать.

Давайте начнем делать SELECT col, HEX(col) FROM ... чтобы увидеть, что было сохранено. Также предоставьте SHOW CREATE TABLE, (Подробнее в Проверьте данные .)

После исправления проблем с Моджибаке и выполнения HEX начните новый вопрос. (Боюсь, что эта ветка станет слишком грязной, чтобы ее сохранить.)

0

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

Я использовал json_encode для отображения результатов запроса select. Это было причиной проблемы.

function my_json_encode($arr)
{
//convmap since 0x80 char codes so it takes all multibyte codes (above ASCII 127). So such characters are being "hidden" from normal json_encoding
array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });
return mb_decode_numericentity(json_encode($arr), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');

}

Использовали эту функцию вместо json_encode по умолчанию. И она отлично работает.

0

По вопросам рекламы [email protected]