Страница 1 из 2
Проблема с кодировкой в базе mysql.
Добавлено: 2007-05-30 14:39:13
klimov
Добрый день всем. Возникла проблема с читабельностью кирилицы в базе mysql 5. Установил для интереса программу aimsniff, Все запускается и работает при запуски программы в консоли все нормально отображается, но возникает проблемма при попытке прочесть те же сообщения из базы mysql, вместо слов знаки вопросов. Mysql ставил по статье уважаемого Лиссяры, в my.cnf прописал default-cheracter-set=cp1251, чего только не пробовал но так и не смог решить данную проблемму. Может кто то сталкивался.
Re: Проблема с кодировкой в базе mysql.
Добавлено: 2007-05-30 15:21:24
lexy
klimov писал(а):... в консоли все нормально отображается, но возникает проблемма при попытке прочесть те же сообщения из базы mysql, вместо слов знаки вопросов. ...
прочесть чем?
если из PHP то после mysql_select_db() выполни mysql_query("SET NAMES 'cp1251'");
2lissyara:
Предлагаю в каждом из форумов сделать ветку FAQ, чтоб по 100 раз не отвечать на одни и те же вопросы (на подобный этому вопрос я отвечал уже раза 2

)
Добавлено: 2007-05-30 16:43:30
dikens3
my.cnf
Код: Выделить всё
[client]
default-character-set = koi8r
character_sets_dir = /usr/local/share/mysql/charsets
[mysqld]
#default_character_set = koi8r
#character_set_server = koi8r
character_sets_dir = /usr/local/share/mysql/charsets
language = /usr/local/share/mysql/russian/
init-connect = "SET NAMES koi8r"
Параметрами такими побалуйся с нужными тебе кодировками.
Добавлено: 2007-05-30 16:45:13
dikens3
Попробуй выставить кодировку, с помощью которой в базу данные записывались. Вполне может быть UTF.
Re: Проблема с кодировкой в базе mysql.
Добавлено: 2007-05-30 17:43:31
klimov
lexy писал(а):klimov писал(а):... в консоли все нормально отображается, но возникает проблемма при попытке прочесть те же сообщения из базы mysql, вместо слов знаки вопросов. ...
прочесть чем?
если из PHP то после mysql_select_db() выполни mysql_query("SET NAMES 'cp1251'");
2lissyara:
Предлагаю в каждом из форумов сделать ветку FAQ, чтоб по 100 раз не отвечать на одни и те же вопросы (на подобный этому вопрос я отвечал уже раза 2

)
Это я пробовал так же как и все другие возможные варианты cp866, koi8r,utf8, не помогает-((((. Пробовал делать запросы напрямую из консоли тоже самое одни вопросы вместо кирилицы, латиница нормально отображается. P.S. в форуме все подобные ткмы прочитал но SET NAMES 'cp1251 не помогает, сейчас лопачу форум
http://www.mysql.ru, таких проблем просто море.
Добавлено: 2007-05-30 17:44:17
klimov
dikens3 писал(а):my.cnf
Код: Выделить всё
[client]
default-character-set = koi8r
character_sets_dir = /usr/local/share/mysql/charsets
[mysqld]
#default_character_set = koi8r
#character_set_server = koi8r
character_sets_dir = /usr/local/share/mysql/charsets
language = /usr/local/share/mysql/russian/
init-connect = "SET NAMES koi8r"
Параметрами такими побалуйся с нужными тебе кодировками.
Спасибо за совет, так еще не пробовал, попробую.
Добавлено: 2007-05-30 17:50:20
Гость
тю, так у тебя походу консоль настроена на кои8, а в базе сп1251 .... как вариант, это mysqldump + iconv
FF
Добавлено: 2007-05-30 18:16:42
dikens3
Ну mysqldump в нужной кодировке нормально прокатит, только надо ли так?
Код: Выделить всё
#!/bin/sh
user="root"
pass="pass"
base="exim"
#base="--all-databases"
mysqldump --default-character-set=koi8r --compact -u$user -p$pass $base > dump.sql
Типа того...
Добавлено: 2007-05-30 19:31:48
klimov
Спасибо за совет сейчас попробую, отпишусь.
Добавлено: 2007-05-30 22:58:25
Alex Keda
2 lexy
вот и сделай

Добавлено: 2007-05-31 14:35:43
klimov
все советы перепробовал пока что ???? вместо кирилицы, консоль переделал на cp1251, не помогло-(((. Буду форум mysql лопатить.
Добавлено: 2007-06-01 13:41:26
klimov
Так и не удалось ничего путнего найти на эту тему, может быть у кого то есть еще мысли на эту тему. Вот мой вывод команды SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | cp1251 |
| character_set_connection | cp1251 |
| character_set_database | cp1251 |
| character_set_filesystem | binary |
| character_set_results | cp1251 |
| character_set_server | cp1251 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------
консоль в русифицирована под cp1251 вот вывод из базы
| 7 | 2007-06-01 17:30:53 | 192.168.0.208 | 419110158 | | 00040007 | ????? ? 18-00 ????????, ???????? 18-15 ???? ? ???? |
| 8 | 2007-06-01 17:31:10 | 192.168.0.208 | | 419110158 | 00040006 | ??????? |
| 9 | 2007-06-01 17:31:41 | 192.168.0.1 | 311871123 | | 00040007 | ??????! ????? ??????????
Вместо кирилицы знаки вопросов.
Пробовал делать вывод в текстовый файл все сохраняется нормально
AIM##TYPE##Incoming Message##TS##2007-6-1 17:32:57##FAMILY##00040007##FROM##60680667##DESTHANDLE####DESTIP##192.168.0.17##MESSAGE##Звонка не поступило от тебя....
AIM##TYPE##Outgoing Message##TS##2007-6-1 17:33:12##FAMILY##00040006##FROM####DESTHANDLE##60680667##SRCIP##192.168.0.17##MESSAGE##да потому что засада
AIM##TYPE##Incoming Message##TS##2007-6-1 17:33:26##FAMILY##00040007##FROM##60680667##DESTHANDLE####DESTIP##192.168.0.17##MESSAGE##счет приняли значит?
Может кто еще чего посоветует-(((. Хочется разобраться.
Добавлено: 2007-06-02 15:02:51
lexy
[mysqld]
#default_character_set = koi8r
#character_set_server = koi8r
character_sets_dir = /usr/local/share/mysql/charsets
language = /usr/local/share/mysql/russian/
init-connect = "SET NAMES koi8r"
обрати внимание на выделенный параметр из my.cnf, поиграй кодировками и не забывай перезапустить mysqld
Добавлено: 2007-06-05 8:05:02
PSdok
Тоже столкнулся с такой же бедой.
Перепробовал все. Бросил.
Через день гляжу пишет все нормально.
вот рабочий файл
Код: Выделить всё
# cat my.cnf
[client]
port = 3306
socket = /tmp/mysql/mysql.sock
[mysqld]
port = 3306
datadir=/var/lib/mysql
socket = /tmp/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin=mysql-bin
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
поправил файл .global.php (это веб интерфейс, самое начало)
Код: Выделить всё
$CONF["db_connid"] = mysql_connect($dbserver, $dbuser, $dbpwd);
mysqli_query($dbname,'SET NAMES "cp1251"');
mysqli_query($dbname,"SET collation_connection='cp1251_general_ci'");
mysqli_query($dbname,"SET collation_server='cp1251_general_ci'");
mysqli_query($dbname,"SET character_set_client='cp1251'");
mysqli_query($dbname,"SET character_set_connection='cp1251'");
mysqli_query($dbname,"SET character_set_results='cp1251'");
mysqli_query($dbname,"SET character_set_server='cp1251'");
mysql_select_db($dbname, $CONF["db_connid"]);
Добавлено: 2007-06-05 8:20:34
klimov
tormozok писал(а):Тоже столкнулся с такой же бедой.
Перепробовал все. Бросил.
Через день гляжу пишет все нормально.
вот рабочий файл
Код: Выделить всё
# cat my.cnf
[client]
port = 3306
socket = /tmp/mysql/mysql.sock
[mysqld]
port = 3306
datadir=/var/lib/mysql
socket = /tmp/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin=mysql-bin
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
поправил файл .global.php (это веб интерфейс, самое начало)
Код: Выделить всё
$CONF["db_connid"] = mysql_connect($dbserver, $dbuser, $dbpwd);
mysqli_query($dbname,'SET NAMES "cp1251"');
mysqli_query($dbname,"SET collation_connection='cp1251_general_ci'");
mysqli_query($dbname,"SET collation_server='cp1251_general_ci'");
mysqli_query($dbname,"SET character_set_client='cp1251'");
mysqli_query($dbname,"SET character_set_connection='cp1251'");
mysqli_query($dbname,"SET character_set_results='cp1251'");
mysqli_query($dbname,"SET character_set_server='cp1251'");
mysql_select_db($dbname, $CONF["db_connid"]);
Спасибо сейчас попробую, а версия aimsniff у тебя 0,9dr005?
Добавлено: 2007-06-05 8:33:35
klimov
Странно у меня при исправлении .global.php пишет ошибку Fatal error: Call to undefined function: mysqli_query() in /usr/local/www/was/.global.php on line 6
Добавлено: 2007-06-05 9:49:03
PSdok
да версия 0,9dr005
она с кирилицей работает
скачал с сайта
Добавлено: 2007-06-05 9:57:54
klimov
tormozok писал(а):да версия 0,9dr005
она с кирилицей работает
скачал с сайта
Покажи плиз вывод свой
SHOW VARIABLES LIKE 'char%';
Добавлено: 2007-06-05 10:11:46
PSdok
Код: Выделить всё
Покажи плиз вывод свой
SHOW VARIABLES LIKE 'char%';
это как?
Добавлено: 2007-06-05 11:54:15
klimov
tormozok писал(а):Код: Выделить всё
Покажи плиз вывод свой
SHOW VARIABLES LIKE 'char%';
это как?
Зайди в mysql и там сделай эту команду, то что выведется напиши здесь плиз.
Добавлено: 2007-06-05 18:38:24
PSdok
Код: Выделить всё
mysql> SHOW VARIABLES LIKE 'char%';
+-------------------------------+----------------------------------+
| Variable_name | Value |
+-------------------------------+----------------------------------+
| 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 | /usr/local/share/mysql/charsets/ |
+----------------------------------+----------------------------------+
Добавлено: 2007-06-06 5:50:57
klimov
Теперь понятно спасибо большое, у тебя mysql установлен с поддержкой кодировки latin1, а у меня cp1251 в этом похоже и есть ошибка, так я не пробовал. По результатам отпишусь.
Добавлено: 2007-06-06 7:59:54
klimov
Все проблема решилась, спасибо tormozok за помощь. Хотя странно какое отношение кодировка latin1 имеет к кирилице-)))) может кто подскажет.
Добавлено: 2007-06-06 8:07:20
PSdok
еще косяк
если пишут из локальной сети номер аськи не определяет, пихает вместо него IP
Добавлено: 2007-06-06 8:16:25
klimov
tormozok писал(а):еще косяк
если пишут из локальной сети номер аськи не определяет, пихает вместо него IP
а ты с внутреннего интерфейса снимаешь данные?