Правильно отображать закодированные символы стиля \xe9 [дубликат]


у меня есть база данных в формате. csv, которую я экспортировал в свою базу данных MySQL и записи которой я хочу отобразить в интернете с помощью PHP.

проблема заключается в том, что некоторые символы закодированы в файле .csv, например \xe9, который соответствует символ unicode é.

слово Atlético показывает его мне как Atl\xe9tico

поле, которое хранит текст в базе данных, я объявил его как VARCHAR с сопоставлением utf8_spanish_ci

как я могу это исправить?

Author: Pedro, 2017-12-29

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 здесь.

Вот и все. Вы уже должны решить проблему. Приветствие!

 2
Author: Huskie, 2018-01-04 12:55:42