Как отображать символы UTF-8 в phpMyAdmin?

Я правильно настроил базу данных для UTF-8 и имею дело с базой данных, содержащей японские символы. Если я делаю SELECT * … из командной строки mysql, я правильно вижу японские символы. Когда вы извлекаете данные из базы данных и показываете их на веб-странице, я вижу это правильно.

Однако при просмотре данных таблицы в phpMyAdmin я вижу только мусорный текст. то есть.

ç§ã¯æ- ¥ 本æ- ™ ç † ãŒå ¥ ½ãã§ã ™ ã €, AE- ¥ 本æ- ™ ç † ã, …

Как я могу заставить phpMyAdmin отображать символы на японском языке?

Кодировка символов на странице HTML установлена ​​в UTF-8.

Редактировать:

Я попытался экспортировать мою базу данных и открыл файл .sql в geany. Символы все еще искажены, даже если кодировка установлена ​​в UTF-8. (Тем не менее, при выполнении mysqldump базы данных также отображаются искаженные символы).

Набор символов задан правильно для базы данных и всех таблиц («latin» не найден нигде в файле)

CREATE DATABASE `japanese` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

Я добавил строки в my.cnf и перезапустил mysql, но изменений нет. Я использую Zend Framework для вставки данных в базу данных.

Я собираюсь открыть щедрость для этого вопроса, поскольку я действительно хочу это понять.

17 Solutions collect form web for “Как отображать символы UTF-8 в phpMyAdmin?”

К сожалению, phpMyAdmin является одним из первых приложений php, которые правильно говорят с MySQL о кодировке. Ваша проблема, скорее всего, связана с тем, что firebase database не сохраняет правильные строки UTF-8 на первом месте.

Для корректного отображения символов в phpMyAdmin данные должны быть правильно сохранены в базе данных. Однако преобразование базы данных в правильную кодировку часто прерывает веб-приложения, которые не знают о компонентах, связанных с кодировкой, предоставляемых MySQL.

Могу ли я спросить: есть ли MySQL> версия 4.1? Для чего веб-приложение является базой данных? PHPBB? Была ли firebase database перенесена из более старой версии веб-приложения или более старой версии MySQL?

Мое предложение не для брата, если используемое вами веб-приложение слишком устарело и не поддерживается. Только конвертируйте базу данных в реальный UTF-8, если вы уверены, что веб-приложение может их правильно прочитать.


Редактировать:

Ваш MySQL составляет> 4.1, это означает, что он кодируется. Каковы настройки сортировки набора символов для вашей базы данных? Я уверен, что вы используете latin1 , который является именем MySQL для ASCII, для хранения текста UTF-8 в байтах в базе данных.

Для клиентов, нечувствительных к кодировке (т. Е. Mysql-cli и php-mod-mysql), символы отображаются правильно, поскольку они передаются в / из базы данных в виде байтов. В phpMyAdmin байты считываются и отображаются как символы ASCII, это текст мусора, который вы видите.

Сколько часов было потрачено несколько лет назад (2005?), Когда MySQL 4.0 устарел, во многих частях Азии. Существует стандартный способ справиться с вашей проблемой и сжигать данные:

  1. Создайте .sql копию своей базы данных как .sql
  2. Откройте его в текстовом редакторе с поддержкой UTF-8, убедитесь, что они выглядят правильно.
  3. Ищите charset collation latin1_general_ci , замените latin1 на utf8 .
  4. Сохранить как новый файл sql, не перезаписывайте резервную копию
  5. Импортируйте новый файл, теперь они будут корректно выглядеть в phpMyAdmin, а японский в вашем веб-приложении станет вопросительным знаком. Это нормально.
  6. Для вашего php веб-приложения, которое полагается на php-mod-mysql, вставьте mysql_query("SET NAMES UTF8"); после mysql_connect() теперь вопросительные знаки исчезнут.
  7. Добавьте следующую конфигурацию my.ini для mysql-cli:

     # CLIENT SECTION [mysql] default-character-set=utf8 # SERVER SECTION [mysqld] default-character-set=utf8 по # CLIENT SECTION [mysql] default-character-set=utf8 # SERVER SECTION [mysqld] default-character-set=utf8 

Для получения дополнительной информации о кодировке MySQL, обратитесь к руководству: http://dev.mysql.com/doc/refman/5.0/en/charset-server.html.

Обратите внимание, что я предполагаю, что ваше веб-приложение использует php-mod-mysql для подключения к базе данных (отсюда и mysql_connect() ), поскольку php-mod-mysql – это единственное расширение, о котором я могу думать, что все еще вызывает проблему в ЭТОМ ДНЕ ,

phpMyAdmin использует php-mod-mysqli для подключения к MySQL. Я никогда не узнавал, как использовать его, потому что переключитесь на фреймворки * для разработки моих проектов php. Я настоятельно рекомендую вам это сделать.

  • Многие фреймворки, например CodeIgniter, Zend, используют mysqli или pdo для подключения к базам данных. Функции mod-mysql считаются устаревшей причиной производительности и масштабируемости. Кроме того, вы не хотите привязывать свой проект к определенному типу базы данных.

Если вы используете PDO, не забудьте запустить его с UTF8:

  $con = new PDO('mysql:host=' . $server . ';dbname=' . $db . ';charset=UTF8', $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 

(просто потратил 5 часов, чтобы понять это, надеюсь, что это сэкономит кому-то драгоценное время …)

Я сделал немного больше поисковых запросов и наткнулся на эту страницу

Команда, похоже, не имеет смысла, но я все равно попробовал:

В файле /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php в конце функции PMA_DBI_connect() перед оператором return я добавил:

 mysqli_query($link, "SET SESSION CHARACTER_SET_RESULTS =latin1;"); mysqli_query($link, "SET SESSION CHARACTER_SET_CLIENT =latin1;"); 

И это работает! Теперь я вижу японские символы в phpMyAdmin. WTF? Почему это работает?

У меня такая же проблема,

Задайте все сопоставления text / varchar в phpMyAdmin в utf-8 и в файлах php добавьте следующее:

mysql_set_charset (“utf8”, $ your_connection_name);

Это решило это для меня.

решение для этого может быть таким же простым, как:

  1. найти функцию / метод соединения phpmysqladmin
  2. добавьте это после того, как firebase database подключена $db_conect->set_charset('utf8');

Вот мой способ, как восстановить данные без рывков от latin1 до utf8:

 /** * Fixes the data in the database that was inserted into latin1 table using utf8 encoding. * * DO NOT execute "SET NAMES UTF8" after mysql_connect. * Your encoding should be the same as when you firstly inserted the data. * In my case I inserted all my utf8 data into LATIN1 tables. * The data in tables was like ДЕТСКИÐ. * But my page presented the data correctly, without "SET NAMES UTF8" query. * But phpmyadmin did not present it correctly. * So this is hack how to convert your data to the correct UTF8 format. * Execute this code just ONCE! * Don't forget to make backup first! */ public function fixIncorrectUtf8DataInsertedByLatinEncoding() { // mysql_query("SET NAMES LATIN1") or die(mysql_error()); #uncomment this if you already set UTF8 names somewhere // get all tables in the database $tables = array(); $query = mysql_query("SHOW TABLES"); while ($t = mysql_fetch_row($query)) { $tables[] = $t[0]; } // you need to set explicit tables if not all tables in your database are latin1 charset // $tables = array('mytable1', 'mytable2', 'mytable3'); # uncomment this if you want to set explicit tables // duplicate tables, and copy all data from the original tables to the new tables with correct encoding // the hack is that data retrieved in correct format using latin1 names and inserted again utf8 foreach ($tables as $table) { $temptable = $table . '_temp'; mysql_query("CREATE TABLE $temptable LIKE $table") or die(mysql_error()); mysql_query("ALTER TABLE $temptable CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci") or die(mysql_error()); $query = mysql_query("SELECT * FROM `$table`") or die(mysql_error()); mysql_query("SET NAMES UTF8") or die(mysql_error()); while ($row = mysql_fetch_row($query)) { $values = implode("', '", $row); mysql_query("INSERT INTO `$temptable` VALUES('$values')") or die(mysql_error()); } mysql_query("SET NAMES LATIN1") or die(mysql_error()); } // drop old tables and rename temporary tables // this actually should work, but it not, then // comment out this lines if this would not work for you and try to rename tables manually with phpmyadmin foreach ($tables as $table) { $temptable = $table . '_temp'; mysql_query("DROP TABLE `$table`") or die(mysql_error()); mysql_query("ALTER TABLE `$temptable` RENAME `$table`") or die(mysql_error()); } // now you data should be correct // change the database character set mysql_query("ALTER DATABASE DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci") or die(mysql_error()); // now you can use "SET NAMES UTF8" in your project and mysql will use corrected data } 

Измените latin1_swedish_ci на utf8_general_ci в phpmyadmin-> table_name-> field_name

Здесь вы найдете его на экране:

Во-первых, от клиента

 mysql> SHOW VARIABLES LIKE 'character_set%'; 

Это даст вам что-то вроде

 +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 

где вы можете проверить общие настройки для клиента, соединения, базы данных

Затем вы также должны проверить столбцы, из которых вы извлекаете данные с помощью

 SHOW CREATE TABLE TableName 

и проверяя кодировку и сопоставление полей CHAR (хотя обычно люди не устанавливают их явно, но можно указать CHAR[(length)] [CHARACTER SET charset_name] [COLLATE collation_name] в CREATE TABLE foo ADD COLUMN foo CHAR ... )

Я считаю, что я перечислил все соответствующие настройки на стороне mysql. Если вы все еще теряетесь, прочитайте мелкие документы и, возможно, этот вопрос, который может пролить некоторый свет (особенно, как я, хотя я понял это, глядя только на клиента mysql в первый раз).

phpmyadmin не следует за соединением MySQL, потому что он определяет его правильную сортировку в файле конфигурации phpmyadmin.

Поэтому, если мы не хотим или не можем получить доступ к параметрам сервера, мы должны просто заставить его отправлять результаты в другом формате (кодировании), совместимом с клиентом, т.е. phpmyadmin

например, если и сопоставление MySQL-соединений, и charset MySQL являются utf8, но phpmyadmin – это ISO, мы должны просто добавить это до любого запроса select, отправленного на MYSQL через phpmyadmin:

 SET SESSION CHARACTER_SET_RESULTS =latin1; 

1- Открыть файл:

 C:\wamp\bin\mysql\mysql5.5.24\my.ini 

2- Ищите запись [mysqld] и добавьте:

 character-set-server = utf8 skip-character-set-client-handshake 

Весь вид должен выглядеть так :

 [mysqld] port=3306 character-set-server = utf8 skip-character-set-client-handshake 

3- Перезапустите службу MySQL!

У меня была точно такая же проблема. Шифрование базы данных – utf-8, а сортировка – utf8_unicode_ci. Я смог увидеть текст Unicode в моем webapp, но результаты phpMyAdmin и sqldump были искажены.

Оказалось, что проблема в том, как мое веб-приложение подключалось к MySQL. Мне не хватало флаг кодирования.

После того, как я исправил это, я смог правильно видеть греческих символов как в phpMyAdmin, так и в sqldump, но потерял все мои предыдущие записи .

Его очень просто добавить многоязычность в myphpadmin, если у вас есть garbdata, отображаемый в myphpadmin, просто перейдите на myphpadmin, нажмите на свою базу данных, перейдите на вкладку «Операции» на вкладке «Операция», см. Раздел сортировки, установите ее в utf8_general_ci, после чего все ваши данные будут отображаться правильно. простой и легкий трюк

просто раскомментируйте эти строки в библиотеках / database_interface.lib.php

 if (! empty($GLOBALS['collation_connection'])) { // PMA_DBI_query("SET CHARACTER SET 'utf8';", $link, PMA_DBI_QUERY_STORE); //PMA_DBI_query("SET collation_connection = '" . //PMA_sqlAddslashes($GLOBALS['collation_connection']) . "';", $link, PMA_DBI_QUERY_STORE); } else { //PMA_DBI_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci';", $link, PMA_DBI_QUERY_STORE); } 

если вы храните данные в utf8 без сохранения кодировки, вам не нужен phpmyadmin для повторного преобразования соединения. Это сработает.

Имена функций и файлов не совпадают с именами в новых версиях phpMyAdmin. Вот как исправить в новых PHPMyAdmins:

  1. Найти файл: phpmyadmin/libraries/DatabaseInterface.php

  2. В функции: public function query

  3. Сразу после открытия { add this:

     if($link != null){ mysqli_query($link, "SET SESSION CHARACTER_SET_RESULTS =latin1;"); mysqli_query($link, "SET SESSION CHARACTER_SET_CLIENT =latin1;"); } 

Вот и все. Работает как шарм.

Более простым решением для wamp является: перейдите в phpMyAdmin, щелкните localhost, выберите latin1_bin для настройки соединения с сервером, затем начните создавать базу данных и таблицу

Добавить:

 mysql_query("SET NAMES UTF8"); 

ниже:

 mysql_select_db(/*your_database_name*/); 

Меня устраивает,

 mysqli_query($con, "SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'"); 
  • Как импортировать (и правильно просматривать) Китайский файл CSV с кодировкой UTF-8 с Excel 2011 на Mac OS X
  • Почему современный Perl избегает UTF-8 по умолчанию?
  • Лучший способ конвертировать текстовые файлы между наборами символов?
  • Установка кодировки символов Java по умолчанию?
  • Значок байтового байта закручивает чтение файлов в Java
  • Пакетное изменение кодировки файлов ascii с utf-8 на iso-8859-1
  • Извлеките большой ZIP-файл (50 ГБ) на Mac OS X
  • Excel в CSV с кодировкой UTF8
  • Notepad ++ вставляет специальные символы Unicode в UTF-8
  • Как заставить MySQL правильно обрабатывать UTF-8
  • Проблемы с символами UTF-8; я не вижу того, что я хранил
  • UTF-8: Общие? Бен? Unicode?
  • Interesting Posts

    Mac OS X / Thunderbird. Как изменить приложение, которое файлы вытащили из Thunderbird?

    Как разбить большой файл flac int и заполнить тег id3?

    Установите спящий раздел Windows

    Как разделить RDD на два или более RDD?

    Можно ли использовать GPU для повышения производительности компьютера автоматически?

    Что на самом деле означает Office 365 Small Business Premium «1 Пользователь / 5 ПК»?

    Как передать символы Юникода как JSP / Servlet request.getParameter?

    Почему иногда клавиатура на моей клавиатуре не работает?

    Как работает форматирование жесткого диска?

    Есть ли способ остановить мой ноутбук от Windows 7 от подключения к Wi-Fi, если сетевой шнур подключен?

    В чем разница между контейнером Docker Ubuntu и контейнером LxD Ubuntu?

    Как сравнить многие значения с оператором OR в слоях mergefield?

    Не удалось очистить старые ошибки реестра

    Можно ли использовать собственный домен для электронной почты с помощью MS Office 365 Home?

    Windows эквивалентна cron?

    Давайте будем гением компьютера.