Латинские символы в phpMyAdmin с параметрами сортировки UTF-8


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

<!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 (таблица, поля, база данных), даже параметры сортировки соединений.

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

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

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

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

Author: Dan H, 2010-06-04

8 answers

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

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

mysql_query("SET NAMES utf8") 

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

 9
Author: Pekka 웃, 2010-06-04 19:49:09

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

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

 1
Author: Artefacto, 2010-06-04 19:49:29

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

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

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

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

 1
Author: xSMOKEx, 2011-01-11 12:40:49

Mysql_query ("НАБОР ИМЕН 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/dir, кодировку и т.д. Тем не менее, знак вопроса в черном ромбе, кажется, более специфичен для этой проблемы/решения, в других случаях отображаются 2-3 странных символа вместо того, который вы хотите.

 1
Author: Logic Industry, 2014-06-02 14:00:30

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

 0
Author: Antonio Marques, 2012-10-26 09:13:22

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

Мой.ini (MSWINDOS)
мой.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
Author: magickey, 2013-02-13 18:06:14

Если 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
Author: Iman Marashi, 2015-07-17 20:31:22

Я столкнулся с той же проблемой и, наконец, нашел элегантный способ проверки и изменения параметров сортировки с помощью функции 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
Author: Іван Марнянський, 2018-05-26 18:30:34