FreeBSD 5.4, MySQL 4.1 и phpMyAdmin из портов. Не могу правильно настроить кодировку. Все вроде выставил в cp1251, но phpMyAdmin показывает в системных переменных character set system = utf8. Сам MyAdmin работает корректно, в консоль на mysql отдается вроде в cp1251 (это на глаз, не перекодировал), но отображается на экране в кои8, то есть нечитаемо. А в PHP вебприложение отдается в виде вопросов ????. Как лечить? И как обеспечить совместимость разрабатываемого приложения со старыми MySQL?
Спасибо!
>FreeBSD 5.4, MySQL 4.1 и phpMyAdmin из портов. Не могу правильно настроить
>кодировку. Все вроде выставил в cp1251, но phpMyAdmin показывает в системных
>переменных character set system = utf8. Сам MyAdmin работает корректно, в
>консоль на mysql отдается вроде в cp1251 (это на глаз, не
>перекодировал), но отображается на экране в кои8, то есть нечитаемо. А
>в PHP вебприложение отдается в виде вопросов ????. Как лечить? И
>как обеспечить совместимость разрабатываемого приложения со старыми MySQL?
>Спасибо!
у меня те же сложности — у заказчиков периодически попадается MySQL 4.1 с доступом только через phpmyadmin. вот и приходится держать два разных сервера баз данных для разработчиков, чтобы не мучаться с перекодировкой дампов из utf и обратно.Если кто нашел другое решение, скажите, плз.
Я проблему не решил, вникать сейчас некогда, просто откатился на MySQL 3.23 - мне для разработки вебприложений его впринципе хватает. Но нерешенные проблемы не люблю, так что как будет время - займусь. Если кто подтолкнет в нужном направлении - буду благодарен.
>Я проблему не решил, вникать сейчас некогда, просто откатился на MySQL 3.23
>- мне для разработки вебприложений его впринципе хватает. Но нерешенные проблемы
>не люблю, так что как будет время - займусь. Если кто
>подтолкнет в нужном направлении - буду благодарен.[mysqld]
init-connect='SET NAMES cp1251'вроде так.
>>Я проблему не решил, вникать сейчас некогда, просто откатился на MySQL 3.23
>>- мне для разработки вебприложений его впринципе хватает. Но нерешенные проблемы
>>не люблю, так что как будет время - займусь. Если кто
>>подтолкнет в нужном направлении - буду благодарен.
>
>[mysqld]
>init-connect='SET NAMES cp1251'
>
>вроде так.Спасибо.. очень помогло. данная проблема существует не только в 4.1 но и в 5.0.18..
PHP код переписывать не хотелось..
>FreeBSD 5.4, MySQL 4.1 и phpMyAdmin из портов. Не могу правильно настроить
>кодировку. Все вроде выставил в cp1251, но phpMyAdmin показывает в системных
>переменных character set system = utf8. Сам MyAdmin работает корректно, в
>консоль на mysql отдается вроде в cp1251 (это на глаз, не
>перекодировал), но отображается на экране в кои8, то есть нечитаемо. А
>в PHP вебприложение отдается в виде вопросов ????. Как лечить? И
>как обеспечить совместимость разрабатываемого приложения со старыми MySQL?
>Спасибо!
Только что решил проблему следующим образом: в PHP скрипте поставил mysql_query("SET NAMES cp1251");(хостинг находится на Яхоо)
>>FreeBSD 5.4, MySQL 4.1 и phpMyAdmin из портов. Не могу правильно настроить
>>кодировку. Все вроде выставил в cp1251, но phpMyAdmin показывает в системных
>>переменных character set system = utf8. Сам MyAdmin работает корректно, в
>>консоль на mysql отдается вроде в cp1251 (это на глаз, не
>>перекодировал), но отображается на экране в кои8, то есть нечитаемо. А
>>в PHP вебприложение отдается в виде вопросов ????. Как лечить? И
>>как обеспечить совместимость разрабатываемого приложения со старыми MySQL?
>>Спасибо!
>
>
>Только что решил проблему следующим образом: в PHP скрипте поставил mysql_query("SET
>NAMES cp1251");
>
>(хостинг находится на Яхоо)Ничего не помогает!
Никак не могу решить данную проблему с phpmyadmin 2.8.0.1 и 2.8.0.2 ( МуSQL 4.1.10)
>Никак не могу решить данную проблему с phpmyadmin 2.8.0.1 и 2.8.0.2 (
>МуSQL 4.1.10)Выяснил, что последняя рабочая версия пхпадмина 2.5.6, начиная с 2.6 кодировка win-1251 в базе не читаема. Кто знает что надо подкрутить в config.inc.php
>>>FreeBSD 5.4, MySQL 4.1 и phpMyAdmin из портов. Не могу правильно настроить
>>>кодировку. Все вроде выставил в cp1251, но phpMyAdmin показывает в системных
>>>переменных character set system = utf8. Сам MyAdmin работает корректно, в
>>>консоль на mysql отдается вроде в cp1251 (это на глаз, не
>>>перекодировал), но отображается на экране в кои8, то есть нечитаемо. А
>>>в PHP вебприложение отдается в виде вопросов ????. Как лечить? И
>>>как обеспечить совместимость разрабатываемого приложения со старыми MySQL?
>>>Спасибо!
>>
>>
>>Только что решил проблему следующим образом: в PHP скрипте поставил mysql_query("SET
>>NAMES cp1251");
>>
>>(хостинг находится на Яхоо)
>
>Ничего не помогает!
>Никак не могу решить данную проблему с phpmyadmin 2.8.0.1 и 2.8.0.2 (
>МуSQL 4.1.10)Да, при коннекте скрипта (и вообще клиента) к серверу нужно указывать тип используемой кодировки иначе все 8-битные символы будут ????????? :
SET NAMES CP1251 или SET CHARSET CP1251;Кроме того, есть полезная весчь: после того как создана база, но еще не созданы таблицы, сделать оператор "alter database БАЗА default charset cp1251". После этого все таблицы и все добавляемые в них поля (бывает приходится добавлять через alter database add column...) всегда будут иметь один и тотже charset, т.е. не будет путаницы чарсетов.
SPASIBO!!!!! SUPER!!!! POMOGLO!!!!
по моему личному опыту здорово помогает
set character set нужная кодировка
об этом также написано в докции на 4.1
это выражение присваивает кодировку сущности соединения в процессе сервера.
также, подробности можно смотреть в
show variables like '%чтонужно%'
и только потом ковыряться в сложных приладах типа myadmin.
сам пользуюсь utf8 и доволен. :)>FreeBSD 5.4, MySQL 4.1 и phpMyAdmin из портов. Не могу правильно настроить
>кодировку. Все вроде выставил в cp1251, но phpMyAdmin показывает в системных
>переменных character set system = utf8. Сам MyAdmin работает корректно, в
>консоль на mysql отдается вроде в cp1251 (это на глаз, не
>перекодировал), но отображается на экране в кои8, то есть нечитаемо. А
>в PHP вебприложение отдается в виде вопросов ????. Как лечить? И
>как обеспечить совместимость разрабатываемого приложения со старыми MySQL?
>Спасибо!
Проблемы с кирилицей Cyrillic Character Sets (cp1251) при работе с mysql 4.1.18 (выводит такое ???????????).
Я нашел как решить проблему. Это посылка дополнительного запроса к mysqlfunction mysql_connection ()
{
Global $host,$user,$pass;if(!$dbc=@mysql_connect("$host","$user","$pass")){
mysql_query("SET NAMES cp1251");
return $dbc;
}
Но иногда это не срабатывает(возможно из-за потери соединения или большого количества запросов к базе). Мой хостинг имеет _ENV["LANG"] en_US.UTF-8, mysql 4.1.18, PHP4.
1) Можно ли как-то работать с Cyrillic Character Sets (cp1251) без посылки дополнительного запроса?
2) Можно ли настроить конфигурацию mysql для работы с cp1251 через .htaccess так как я не имею доступа к php.ini и my.ini на хостинге?
>1) Можно ли как-то работать с Cyrillic Character Sets (cp1251) без посылки
>дополнительного запроса?
>2) Можно ли настроить конфигурацию mysql для работы с cp1251 через .htaccess
>так как я не имею доступа к php.ini и my.ini на
>хостинге?
В папке сайта public_html откройте config.php и впишите в нем после <?php
mysql_query("SET NAMES 'cp1251'");
тоже самое в admin.php
Тогда ????? изменятся на русский язык
Если не поможет впишите и это
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
просто еслставляи вставлять данные не из файла, а в форму маскладмина получается кои8
Все проблемы решатся. Возьми, просто, phpMyAdmin 2.7.0-pl1. Он отлично управляет как самой БД, так и кодировками, сравнениями, представлениями. Там все интуитивно понятно. создашь новую БД с нужной тебе кодировкой, например: cp1251_general_cs - Кириллический (многоязычный), чувствительный к регистру. Из старой БД экспортом данных извлеки все данные и влей как огромный SQL запрос на создание таблиц с данными все данные в новую БД. Все просто до критинизма, но и я над этим промучался целые сутки, пока нашел все, что мне нужно и сделал как мне нужно.
CREATE TABLE `message_body` (
`message_id` int(6) unsigned NOT NULL default '0',
`message` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;Помоголо!
> CREATE TABLE `message_body` (
> `message_id` int(6) unsigned NOT NULL default '0',
> `message` text NOT NULL
> ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
> Помоголо!Уважаемый ГУРУ!
Все сделал как Вы написали!
Не помогло!
Опять эти ????? в базе данных!Может быть есть еще какой способ?
С уважением
Александр