PHP строка не преобразуется в UTF 8 при выборе из MySQL

У меня есть следующий скрипт:

header('Content-type: text/plain; charset=utf-8');

$rq = "SELECT `name` FROM `mapamond_countries` WHERE `id` = 93";
$str = $db->GetAll($rq);

var_dump($str[0]['name']);
var_dump("شيلى");

Строка شي٠„Ù ‰ скопирована из базы данных (phpmyadmin).

Первый var_dump:
строка (25) «Ø» „جيÙا»

Второй var_dump:
строка (8) «شيلى»

Может ли кто-нибудь1 объяснить, почему эта разница и как ее исправить? Разбор БД, разбор таблиц и разбор столбцов — utf8_unicode_ci.

1

Решение

Пытаться:

1- выполнить этот запрос ALTER DATABASE mydatabasename charset=utf8;

2-использование SET NAMES utf8 прежде чем делать какой-либо запрос

3-использование DEFAULT CHARSET=utf8 при создании новых таблиц

изменить таблицу

ALTER TABLE `tableName` CHARACTER SET utf8;
1

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

«Ø¨Ù„ جيكا »- это« двойное кодирование »для« شيلى ». ВЫБЕРИТЕ HEX (col) … из таблицы, чтобы увидеть, что у вас есть. «C398C2B4C399C5A0C399E2809EC399E280B0» — это значение с двойным кодированием для того, каким должно быть шестнадцатеричное значение: «D8B4D98AD984D989». Двойное кодирование обсуждается в http://mysql.rjweb.org/doc.php/charcoll . Если ответ Усамы не удастся исправить данные; прочитайте этот блог и / или давайте обсудим проблему дальше.

0

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