• Авторизация


#1076 // Кодировка в MySQL 28-01-2009 00:10 к комментариям - к полной версии - понравилось!


Смена кодировки базы в phpMyAdmin

hasem
Здрасте!Мне понадобилось поменять кодировку с (utf8) на Russian win-1251
Выкладки там две 1. Сопоставление соединения с MySQL: cp1251_bin 2. Language я так понимаю это язык phpMyAdmin там все utf8! А вот напротив MySQL-кодировка: выкладки нет там просто написано
UTF-8 Unicode (utf8)!


Rash
Если я не ошибаюсь, то тебе нужна кодировка cp1251_general_ci (Кириллическая нечувствительная к регистру). Если позволяют привилегии выполни следующие запросы для таблиц данной базы данных, а затем и для самой базы данных
ALTER TABLE table1 CONVERT TO CHARACTER SET cp1251_general_ci
ALTER TABLE table1 DEFAULT CHARACTER SET cp1251_general_ci
ALTER DATABASE database1 DEFAULT CHARACTER SET cp1251_general_ci

apata
Доброго времени суток! Подскажите, а чтобы кои8-р кодировка везде была, это просто вместо cp1251_general_ci нужно поставить koi8r_bin или
koi8r_general_ci?? или как-то по-другому? Заранее благодарна

Rash
koi8r_general_ci

apata
Подскажите, пожалуйста, а можно ли сделать так, чтоб в MySQL по умолчанию была кодировка koi8r? у меня стоит apache2+php5.1.2+MySQL5.0.19+phpMyAdmin2.8.1? Спасибо!

Rash
проверь в my.ini/my.cnf следующие строчки:

[mysqld]
basedir="c:/путь/mysql/"
datadir="c:/путь/mysql/data/"
character-sets-dir="c:/путь/mysql/share/charsets"
default-character-set="koi8r"
default-collation="koi8r_general_ci"
character-set-server="koi8r"


apata
Спасибо большое! И если можно еще вопросик: а как сделать так, чтобы в базе кодировка была не важно какой, а вывод броузер корректно отображал кодировку koi8r? это в апаче надо задать или пхп или там и там? Спасибо!

Experior
Если у тебя в базе данные лежат в кодировке отличной от koi8r, то вывести в браузер в этой кодировке будет проблематично. Если конечно это не Юникод, в этом случае, если я не ошибаюсь кодировку указывать браузеру необязательно. ИМХО, конечно.

apata
А если это юникод (это ведь кодировка по умолчанию в MySQL?) то как это сделать в апаче нужно прописывать или пхп?

Experior
вообще-то кодировка по умолчанию в MySQL выставляется latin1.
И в Апаче ничего прописывать не надо, можешь браузеру скармливать

Ноябрь
Мне нужно перевести базу данных в cp1251_general_ci, на моем локальном сервере, в установленом денвере phpmyadmin настроен так, что в закладке операции есть поле сравнение, в котором я легко могу перевести таблицу из одного формата в другой, как настроить phpmyadmin 2.8.1, стоящий на сервере таким же образом?.
Я попробовал использовать тот же скл-запрос генерируем на локальном сервере, вышла ошибка синтаксиса..
ALTER DATABASE `g` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci
на сервере MySQL - 4.0.15

Lokki
ALTER DATABASE `g` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci
ALTER DATABASE `g` DEFAULT CHARACTER SET cp1251_general_ci

Aire
У меня возникла такая проблема - по сути дела, исходные данные те же - нужно сделать дамп в кодировке ср1251, но запросы к БД не проходят.
Проблема возникает на хостинге Джино - его бесплатной версии, phpMyAdmin 2.6.3-pl1, MySQL 5.0.18. MySQL-кодировка: UTF-8 Unicode (utf8), Сопоставление соединения с MySQL cp1251_general_ci.
на запросы ALTER DATABASE the-necklace DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci; ALTER DATABASE the-necklace DEFAULT CHARACTER SET cp1251, а также ALTER DATABASE the - necklace DEFAULT CHARACTER SET cp1251_general_ci
выдает следующее сообщение - #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL serv version for the right syntax to use near 'the-necklace' DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci' at line 1.
Честно, я не знаю, какие там отличия в пятых версиях MySQL. А при переезде на новый, платный хостинг дампы БД оказываются не валидными - то, что прописано непосредственно в файлах php, отображается корректно. Содержимое БД - полностью "закодированно".

Hanut
Попробуйте забрать имя БД в косые кавычки - `the-necklace`.
Посмотрите на отличия в настройках сервера MySQL на хостах.

nextkmv
Доброго времени суток. Возникла следующая проблема:
Имеется удалённая БД на бесплатном хостинге (доступ к my.cnf нету) кодировка базы utf8-ru. При добавлении записи данные в таблице имеют вид "???????" попытки изменения кодировки ни к чему не привели. Чем поможете заранее благодарен.

Hanut
Чем идет добавление записи? Где вопросики отображаются, на сайте? Как выглядят данные в phpMyAdmin?
В phpMyAdmin выполните следующий SQL запрос и покажите его вывод:
SHOW GLOBAL VARIABLES LIKE 'char%';

nextkmv
Добавление происходит через скрипт на удалённом сервере
$result=mysql_query("INSERT INTO `id` ( `ID` , `Server` , `Urlpage` , `Player` , `Fname` , `Disc` , `janre` , `Tag1` , `Tag2` )
VALUES ('', '$link', '$page', '$player', '$fname', '$disc', NULL , NULL , NULL);", $link_id);
Вопросики отображаются в phpMyadmin на удалённом сервере. На локальном в денвере всё отображается корректно.
Результат SHOW VARUABLES
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /home/users/disk1/mysql-srv/share/mysql/charsets/

Hanut
Вам необходимо установить кодировку соединения с MySQL в utf8, для чего сразу после функции соединения mysql_connect(), необходимо добавить следующую строку:
mysql_query('SET NAMES utf8');
Если вызов функции подключения происходит в разных местах, то добавлять строку надо везде, или лучше создать единую функцию соединения, где и прописать данную строку.

nextkmv
К сожалению не помогло. До этого там стаяла CMS joomla она всё корректно показывала хм.. буду её мучать. Всё равно СПАСИБО

nextkmv
Наконец то получилось
mysql_query('SET NAMES cp1251');
БОООООЛЬШОЕ СПАСИБО!!!!!!!!!
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник #1076 // Кодировка в MySQL | Платиновая_пыль - -= Осколки реальности =- | Лента друзей Платиновая_пыль / Полная версия Добавить в друзья Страницы: раньше»