- Отображение кириллицы
- 2 Ответ от Hanut 2009-10-06 12:51:25
- Re: Отображение кириллицы
- 3 Ответ от VGreen 2009-10-07 22:34:38
- Re: Отображение кириллицы
- 4 Ответ от Hanut 2009-10-08 01:05:42
- Re: Отображение кириллицы
- 5 Ответ от nostromo 2010-02-06 14:53:29 (изменено: nostromo, 2010-02-06 15:28:39)
- Re: Отображение кириллицы
- 6 Ответ от Ruskat 2010-02-19 17:48:14
- Re: Отображение кириллицы
- 7 Ответ от Hanut 2010-02-19 22:17:34
- Re: Отображение кириллицы
- 8 Ответ от Ruskat 2010-02-20 03:04:48
- Re: Отображение кириллицы
- 9 Ответ от Hanut 2010-02-20 12:01:47
- Re: Отображение кириллицы
- 10 Ответ от 4EVERCooL 2010-03-19 10:53:37
- Re: Отображение кириллицы
- 11 Ответ от Hanut 2010-03-19 12:38:28
- Re: Отображение кириллицы
- 12 Ответ от Vovik 2011-01-02 10:35:16
- Re: Отображение кириллицы
- 13 Ответ от DmitryV 2011-01-02 10:59:41 (изменено: DmitryV, 2011-01-02 11:03:26)
- Re: Отображение кириллицы
- Форум
- mysql/phpmyadmin нет кодировки utf8_general_ci
- mysql/phpmyadmin нет кодировки utf8_general_ci
- Re: mysql/phpmyadmin нет кодировки utf8_general_ci
- Re: mysql/phpmyadmin нет кодировки utf8_general_ci
- Re: mysql/phpmyadmin нет кодировки utf8_general_ci
Отображение кириллицы
Заносим текст в utf8.
В броузер выводится правильно. в консоли тоже все нормально:
mysql> select keywords from rus_section where/>+———————+
| keywords |
+———————+
| Кириллица |
+———————+
Логично предположить, что MySQL работает нормально.
Но при поросмотре через phpmyadmin, выдает кракозябры:
keywords
. »?». †?°
2 Ответ от Hanut 2009-10-06 12:51:25
Re: Отображение кириллицы
VGreen
Скрипт, которым вы добавляете данные, необходимо поправить таким образом, чтобы он сперва устанавливал корректную кодировку соединения с MySQL.
Если скрипт на PHP, то следует сразу после функции соединения mysql_connect добавить строку:
mysql_query(‘SET NAMES utf8’);
Если не указать скрипту устанавливать кодировку соединения, то она будет браться из глобальных настроек, судя по всему у вас там будет latin1. Глобальную кодировку соединения можно узнать запросом:
SHOW GLOBAL VARIABLES LIKE ‘char%’;
С консолью осторожнее. Перед использованием необходимо настроить ее на работу в требуемой кодировке.
3 Ответ от VGreen 2009-10-07 22:34:38
Re: Отображение кириллицы
Ага понял, похоже что, при не правильной кодировке соединения mysql хранит utf8 в виде последовательности байт, а не символов. Что подтверждается экспериментом, срока в 200 символов обрезается при записи в поле varchar(250).
Скрипт вывода переводит байты обратно в символы и выдает в броузер, создается впечатление что все работает правильно, только myadmin «умничает».
Указание SET NAMES utf8 при вводе и выводе решает проблему.
4 Ответ от Hanut 2009-10-08 01:05:42
Re: Отображение кириллицы
VGreen
Все верно, только данные идут все-же не в виде байт (не бинарно), а в виде номеров из таблицы символов, поэтому получаются крякозябы. То есть: в таблицах символов по одному и тому же номеру в разных кодировках существуют разные символы и при подмене кодировок место символа в таблице остается прежнее, а вот таблица кодировки уже иная. Так и выходит, что обратное превращение крякозяб в читаемый текст тоже вполне объяснимо: место в таблице символов осталось прежнее, а кодировка сменилась на исходную.
Неумение большого количества скриптов и программ работать с кодировками соединения — это большая беда. Но это не беда MySQL, а недочеты разработчиков этих скриптов и программ.
5 Ответ от nostromo 2010-02-06 14:53:29 (изменено: nostromo, 2010-02-06 15:28:39)
Re: Отображение кириллицы
Уважаемые Господа.
Не стал создавать новую ветку. Прошу ПОМОЩИ.
Установил РМА. Все вроде симпатично, но вот с кодировками такая лажа, что сам разобраться не могу. И в РМА и на сайте и в мускуле вся кирилица . Ну, что надо подправить, подскажите, ну сил не уже никаких. Все сравнения и представления cp1251_general_ci. сайт написан в той-же кодиировке, но везде.
При загрузке РМА внизу пишется:
Версия клиентской библиотеки MySQL (4.1.7) отличается от версии установленного MySQL-сервера (5.0.6). Это может привести к некорректной работе.
Но мне кажется, что к кодировке это не имеет никакого отношения. Пожалуйста помогите.:(
Большое спасибо всем. Проблему решил.
6 Ответ от Ruskat 2010-02-19 17:48:14
Re: Отображение кириллицы
Узнал с вашей помощью вот такое:
Команда:
SHOW GLOBAL VARIABLES LIKE ‘char%’
Результат:
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 L:\xampp\xampp\mysql\share\charsets\
Как всё настроить так, чтобы избежать каракуль? Бо есть один движок, и май админ ни в какой кодировке не хочет воспринимать базу данных. При попытке залить в ручную пишет:
Ошибка
INSERT INTO SS_categories( categoryID, name, parent, products_count, description, picture, products_count_admin )
VALUES ( 1, ‘Автомобили’, 0, 7, ‘Здесь собраны несколько представителей лучших автомобилей мира’, ‘C1_jaguar.jpg’, 0 ) ;
Ответ MySQL:
#1146 — Table ‘nedvig_map.ss_categories’ doesn’t exist
При установке скриптом заливает, но все тексты получаются . ?? . в виде знаков вопросов.
7 Ответ от Hanut 2010-02-19 22:17:34
Re: Отображение кириллицы
Ruskat
В конфигурационный файл MySQL (my.ini или my.cnf) в разделе [mysqld] добавьте строку:
[mono]init-connect=»SET NAMES cp1251″[/mono]
Это в том случае, если скрипт в кодировке windows-1251.
8 Ответ от Ruskat 2010-02-20 03:04:48
Re: Отображение кириллицы
Hanut, внёс данную команду в my.ini, но опосля апач отказался запускаться. Убрал «нововведение» — запустился.:| Я вот думаю, может там где защита стоит.
9 Ответ от Hanut 2010-02-20 12:01:47
Re: Отображение кириллицы
Ruskat
Не могу сказать причину. Apache вобще-то здесь ни при чем должен быть.
Обратите внимание на данную статью: http://php-myadmin.ru/learning/instrument-intro.html
Возможно вам будет лучше установить веб-сервер с ее помощью, чем мучиться с Xampp.
10 Ответ от 4EVERCooL 2010-03-19 10:53:37
Re: Отображение кириллицы
Здравствуйте! Ну вот, еще один новичок в моем лице с той же головной болью . Только я новичок еще больше, чем все остальные )). ПРоблема у меня в том, что я купил флэшевый шаблон фотосайта у буржуев. Шаблон работает с MySQL+PHP и изначально не поддерживал русский язык, так как буржуям невдомек про Embed и кириллицу. Пришлось декомпилить все самому и править. Теперь самое интересное. Флэш берет например тексты меню из БД мускула, а в мускул они вносятся через пхп админку. БД выдает следующее:
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/
Все таблицы бд были в latin1. Путем слива дампа и корректировки кодировок, перевел некоторые таблицы в утф8. Проблема сейчас в том, что загрузка текстов из админки в БД на русском происходит нормально, флэшем интерпретируется правильно, а вот в PhPMyAdmin в полях базы юникодовские кракозябры. В скрипт соединения с бд я добавил:
mysql_query(«SET NAMES ‘utf8′»);
К тому же, попытался вставить метатеги для странички через админку — тут уже не получается, заголовок страницы в браузере выходит кракозябрами. Прописал напрямую в базе по русски — заголовок выходит по русски, а вот метатеги вот так:
. . . ²
В общем, перепробовал уже кучу способов, но ничего не помогает. Я пытаюсь все привести к общему знаменателю, в виде кодировки utf-8, правильно ли я делаю? Спасибо за помощь заранее!
11 Ответ от Hanut 2010-03-19 12:38:28
Re: Отображение кириллицы
4EVERCooL
Лучше всего начинать без данных, тогда будет проще.
1) Делаем дамп таблиц (данных в кириллице быть не должно), или используем имеющийся и правим в нем все latin1 на utf8 (кодировки и сравнения). Затем импортируем этот дамп, все таблицы теперь будут в utf8.
2) Поиском по всем файлам скрипта надо найти вызов функции mysql_connect и добавить после нее [mono]mysql_query(«SET NAMES ‘utf8′»);[/mono]3) Мета теги кодировки страниц должны быть utf-8.
4) Запишите данные из админки в БД и проверьте, чтобы в phpMyAdmin был читаемый русский текст.
Если не получится, то проделайте все то же самое, но замените utf8 на cp1251, возможно есть ограничения для многобайтных кодировок в скрипте.
Как с кодировками работает флеш, я не знаю, поэтому не уверен, что все получится. В любом случае, сохраните все исходные файлы и дамп БД.
12 Ответ от Vovik 2011-01-02 10:35:16
Re: Отображение кириллицы
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
Токая же проблемка была с отображение мета данных, вручную все в правил на utf8_general_ci, после чего руский текст начал нормально отображать, но это:
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
так и осталось может подскажете в пошаговом желательно рижиме_) как это можно убрать исправить
13 Ответ от DmitryV 2011-01-02 10:59:41 (изменено: DmitryV, 2011-01-02 11:03:26)
- DmitryV
- Пенсионер
- Неактивен
- Откуда: Санкт-Петербург, Россия
- Зарегистрирован: 2010-07-31
- Сообщений: 558
Re: Отображение кириллицы
Откройте для редактирования файл «my.ini».
1 — В раздел [client], после строки:
port=3306
добавьте:
character-sets-dir="Ваш путь к /mysql/share/charsets"
2 — в разделе :
[mysql]укажите:
default-character-set=cp1251
3 — в разделе:
[mysqld]укажите:
character-sets-dir="Ваш путь к /mysql/share/charsets" init-connect="SET NAMES cp1251" character-set-server=cp1251
далее все необходимые в скипте значения кодировок если они будут отличны от заданных по умолчанию, задавайте в тексте своих скриптов после соединения с сервером mysql выполнив запрос вида:
mysql_query('SET NAMES нужная кодировка');
mysql_query('SET NAMES utf8');
Форум
mysql/phpmyadmin нет кодировки utf8_general_ci
mysql/phpmyadmin нет кодировки utf8_general_ci
Привет! Работал ранее на os 5.3.7 с активированным mysql 8 и phpmyadmin вашим, кодировка была на месте. Сегодня дошли руки начисто самую свежую версию поставить 5.4.3 поставил. Выставил также mysql 8, после захожу в phpmyadmin и пытаюсь создать базы чтобы потом восстановить свои дампы, но сейчас в выборе кодировки нет utf8_general_ci и самого раздела utf8
ps я понимаю что для новых проектов лучше использовать utf8mb4_0900_ai_ci я так и делаю. Но у меня все еще есть старые проекты которые должны работать на utf8_general_ci
Re: mysql/phpmyadmin нет кодировки utf8_general_ci
В чём ваш вопрос, в том что в MySQL разработчики убрали кодировку utf8_general_ci? Ну они правильно сделали, кодировка имела большие проблемы с сортировкой. Запускайте ваш проект на совместимой старой версии MySQL, раз ему требуется именно такая старая кодировка.
Re: mysql/phpmyadmin нет кодировки utf8_general_ci
jenokizm писал(а): ↑ 18 сен 2022, 16:17 ps я понимаю что для новых проектов лучше использовать utf8mb4_0900_ai_ci я так и делаю. Но у меня все еще есть старые проекты которые должны работать на utf8_general_ci
Всё на месте, просто называется это сравнение явно: utf8mb3_general_ci для 3-байтовых и utf8mb4_general_ci для 4-байтовых.
Менять в старом коде ничего не надо, старый utf8_general_ci является алиасом для utf8mb3_general_ci и корректно обрабатывает, если он указан в тексте дампа при импорте, например. Но в большинстве случаев ничего не должно сломаться даже и при переходе на новую кодировку, она обратно совместима, можно так выразиться, разве что в редких случаях индексы 4-байтные могут не влезть в ограничение на длинных полях. А при переименовании из «utf8» в явный utf8mb3 ничего вообще не может сломаться, это только лишь названия одного и того же.
Re: mysql/phpmyadmin нет кодировки utf8_general_ci
Максим писал(а): ↑ 18 сен 2022, 16:30 В чём ваш вопрос, в том что в MySQL разработчики убрали кодировку utf8_general_ci?
В том числе и в этом. Я бы понял если бы это сделали в мажорном релизе, но никак не ожидал в минорном обновлении и не смог найти в интернете информации по этому поводу. Я как использовал MySQL 8.0 так и продолжаю его использовать.
SagePointer писал(а): ↑ 19 сен 2022, 11:43 старый utf8_general_ci является алиасом для utf8mb3_general_ci
Спасибо большое! Разобрался. Да это работает для меня.
Что касается перевода всех сайтов на utf8mb4_0900_ai_ci даже если захочу не имею такой возможности. На хостинге бегет до сих пор нет MySQL 8.0, вот скриншот из панели моего хостинга