Как отобразить символы UTF-8 в phpMyAdmin? - PullRequest
57 голосов
/ 24 января 2011

У меня правильно установлена ​​база данных UTF-8, и я работаю с базой данных, содержащей японские символы.Если я делаю SELECT * ... из командной строки mysql, я правильно вижу японские символы.При извлечении данных из базы данных и отображении их на веб-странице я вижу их правильно.

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

1006 * Как заставить 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 для вставки данных в базу данных.

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

Ответы [ 18 ]

2 голосов
/ 31 января 2011

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

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).

2 голосов
/ 13 февраля 2013

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!

1 голос
/ 10 сентября 2015

просто раскомментируйте эти строки в библиотеки / 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 для повторного преобразования соединения.Это будет работать.

1 голос
/ 07 ноября 2013

У меня была точно такая же проблема. Кодировка базы данных - это utf-8, а сопоставление - utf8_unicode_ci. Мне удалось увидеть текст Unicode в моем веб-приложении, но результаты phpMyAdmin и sqldump были искажены.

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

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

0 голосов
/ 17 октября 2018

ALTER TABLE table_name Преобразовать в набор символов utf8;

* ВАЖНО: Сначала выполните резервное копирование, выполните после

0 голосов
/ 10 июня 2017

у меня работает,

mysqli_query($con, "SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
0 голосов
/ 27 марта 2015

Добавить:

mysql_query("SET NAMES UTF8");

ниже:

mysql_select_db(/*your_database_name*/);
0 голосов
/ 25 февраля 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...