Латинские символы в phpMyAdmin с сопоставлением UTF-8 - PullRequest
4 голосов
/ 04 июня 2010

Мой сайт использует:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

И эта мета:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Я создал свою базу данных и таблицы в phpMyAdmin, убедившись, что все установлено как utf8_unicode_ci (таблица, поля, база данных), даже сопоставление соединения.

Когда я вставляю в базу данных несколько латинских символов (ударения и т. Но если я зайду в phpMyAdmin, все латинские символы будут испорчены, что-то вроде ±.

Если я попытаюсь исправить эти данные в phpMyAdmin, то мой веб-сайт отображает данные неправильно, со странными символами .

Что в этом мире я делаю неправильно? Я пытался решить это часами безуспешно.

Спасибо всем!

Ответы [ 8 ]

9 голосов
/ 04 июня 2010

Как говорит @Artefacto, это может быть локальной проблемой для phpMyAdmin.

Если phpMyAdmin в порядке (т. Е. Установлен в UTF-8) и данные по-прежнему отображаются странно, то посмотрите, поддерживает ли ваша база данных connection также UTF-8?

mysql_query("SET NAMES utf8") 

(или что вы используете в качестве библиотеки базы данных) может помочь, если это не так.

1 голос
/ 02 июня 2014

mysql_query ("SET NAMES utf8") решил мою проблему.

Проблема: символы отображаются правильно в phpMyAdmin, неправильно в HTML / PHP. Символы: â, î и т. Д.

С заголовками все в порядке (utf8), phpmyadmin отображает содержимое в правильной форме, но веб-сайт продолжает показывать странные знаки вопроса (внутри символа черного алмаза).

HTML код:

<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Решение: я добавил в php (перед любыми другими запросами):

mysql_query("SET NAMES utf8");

Другие причины могут привести к такому поведению; это только одна часть решения. Вам может потребоваться проверить тип контента, конфигурацию веб-сервера (httpd.conf), html lang / dir, charset и т. Д. Однако вопросительный знак в черном ромбе, кажется, более специфичен для этой проблемы / решения, в других случаях отображается 2-3 странных символа вместо того, который вы хотите.

1 голос
/ 11 января 2011

для вопроса Скуззу есть несколько способов:

http://www.mysqlperformanceblog.com/2007/12/18/fixing-column-encoding-mess-in-mysql/

У меня было бы еще восемь ссылок с различными задачами, но этот сайт мешает мне их сохранить ...

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

1 голос
/ 04 июня 2010

Если phpMyAdmin показывает ñññ вместо ñññ, это потому, что он интерпретирует поток данных UTF-8 как ISO-8859-1. Таким образом, содержимое вашей базы данных, вероятно, правильно, phpMyAdmin просто показывает их неправильно.

Я не знаком с приложением, но вы можете заставить браузер читать страницу как UTF-8 (обычно View> Encoding> UTF-8).

0 голосов

Я столкнулся с той же проблемой и наконец нашел элегантный способ проверки и изменения параметров сортировки с помощью PHP-функции mysqli_set_charset. Следующий фрагмент кода должен быть включен между проверкой $conn и запросом $sql:

if (!mysqli_set_charset($conn, "utf8")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($conn)); //optional row
    die();
}

Я нашел решение здесь: http://php.net/manual/en/mysqli.set-charset.php

0 голосов
/ 17 июля 2015

Если phpMyAdmin в порядке (т. Е. Установлен в UTF-8) и данные все еще отображаются странно, то посмотрите, использует ли ваше соединение с базой данных также UTF-8?

Просто установите mysql_query("SET NAMES utf8"); после mysql_connect строка:

$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
    mysql_query("SET NAMES utf8");
0 голосов
/ 13 февраля 2013

1 - Редактировать файл:

my.ini (MsWindos)
my.cnf (GNU / linux)

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!

0 голосов
/ 03 февраля 2012

После выполнения mysql_query("SET names 'utf8';"); Вам также нужно перейти на mySQL и определить параметры сортировки как UTF-8! Это должно решить вашу проблему. Удачи!

...