Правильно отображать закодированные символы стиля \xe9 [дубликат]
у меня есть база данных в формате. csv, которую я экспортировал в свою базу данных MySQL и записи которой я хочу отобразить в интернете с помощью PHP.
проблема заключается в том, что некоторые символы закодированы в файле .csv, например \xe9
, который соответствует символ unicode é.
слово Atlético
показывает его мне как Atl\xe9tico
поле, которое хранит текст в базе данных, я объявил его как VARCHAR с сопоставлением utf8_spanish_ci
как я могу это исправить?
1 answers
Вы должны иметь в виду много вещей:
1) первое, что нужно сделать, это открыть файл .csv затем нажмите " файл-> сохранить как и когда вы нажмете на экран, куда сохраняется файл, в нижней части вы найдете вкладку, которая говорит "кодирование" обычно по умолчанию на "ANSI" необходимо заменить на "utf-8" затем сохраняете, снова с расширением .csv
2) Проверьте, что в разделе из ваших веб-форм это meta tag следующий:
<head>
<meta charset="UTF-8">
</head>
3) Поскольку вы уже проверили сопоставление своей базы данных, остается только после строки подключения, которую вы имеете в своих php-файлах, поместить после выбора базы данных в mysql (mysql_select_db):
mysql_query("SET NAMES 'utf8'");
Чтобы иметь двойную гарантию, что все осталось в utf-8 в базе данных
Примечание: я поместил mysql в качестве инструкции, потому что я не знаю, владеете ли вы php7 если это так, вы должны изменить, где mysql говорит mysqli, потому что инструкции mysql устарели с версии PHP 5.5.0 и удалены из версии PHP 7.0.0. чтобы увидеть больше этого нажмите здесь
4) Не забудьте также сохранить в кодировке utf-8 все архивные файлы вашего проекта . php поскольку многие текстовые редакторы по умолчанию входят в кодировку ANSI (как то, что я объяснил на шаге 1)
5) Если у вас есть файл . htaccess в корневой папке вашего проекта, откройте файл и поместите его в качестве первой строки:
AddDefaultCharset utf-8
6) Если ничего из вышеперечисленного не сработало, останется только после запуска query в mysql непосредственно перед отображением информации (распечатайте ее с помощью echo) сначала поместите:
$mostrar = utf8_decode($mostrar);
Где $mostrar
- любое поле, полученное из таблицы, к которой вы сделали select. Я ставлю его последним, потому что это должно быть сделано каждый раз, когда вы показываете информация для пользователя, поступающая из таблицы, которая дает вам эти символы \xe9
.
Вы можете проверить utf8_decode здесь.
Вот и все. Вы уже должны решить проблему. Приветствие!