1 (изменено: Тимур, 2009-05-03 01:07:16)

Тема: Крокозябры

В php-myadmin(Денвера) в обзоре таблицы ползут крозябры.
Набираю запрос SHOW VARIABLES LIKE 'character%'
выходят следующие строки:
character_set_client      cp1251
character_set_connection     utf8
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\mysql5\share\charsets\

По логике нужно изменить кодировку utf8 на сp1251, но вопрос заключается в том, в какой строчке это менять -  character_set_connection utf8
или character_set_system     utf8, и что нужно предпринять, чтобы это изменить.

2

Re: Крокозябры

Тимур
Надо определить глобальные значения переменных.

SHOW GLOBAL VARIABLES LIKE 'char%';

Если необходимо установить кодировку cp1251, то делаем так:
Открываем конфигурационный файл MySQL (my.ini/my.cnf) и правим директивы в соответствующих разделах.

[mysql]
default-character-set=cp1251
[mysqld]
init-connect="SET NAMES cp1251"
default-character-set=cp1251

Перезапускаем MySQL и смотрим кодировку соединения снова, теперь она будет cp1251.

Насколько я знаю в Денвере изначально стоит настройка на cp1251. Возможно у вас проблема не в настройках MySQL, а в настройках скрипта, который устанавливает кодировку соединения сам.

3

Re: Крокозябры

Где бы найти бы в Денвере эти настройки скрипта.........

4

Re: Крокозябры

Тимур
Какой скрипт используете? Это форум какой-то? Обычно в документации скрипта можно найти директиву установки кодировки соединения с MySQL. Ее следует установить в cp1251.

Но сперва уточните как появились крякозябы в phpMyAdmin. Возможно вы импортировали дамп уже с крякозябами. Или крякозябы появляются именно при записи данных скриптом? То есть: на сайте отображается нормально, а в phpMyAdmin крякозябы.

5

Re: Крокозябры

Это не форум, это просто тестовая (тренировочная) база данных, файлы, которой я вставил в папку Data.

6

Re: Крокозябры

Тимур
В папку data ничего вставлять не надо. Дампы так не импортируются. Но раз уж сами таблицы отобразились, значит именно в виде крякозябов они и выглядели в исходном виде, откуда вы их взяли.

7

Re: Крокозябры

сам сделал в Mysql-client  (до Денвера). Выглядели как надо ))))

8

Re: Крокозябры

Тимур
Не понял про Mysql-client - это из командной строки? Если из нее, то без специальных настроек командная строка предает данные в DOS кодировке (cp866). Разумеется, такие данные нельзя использовать на страницах в кодировке cp1251. Можно перекодировать, или заполнить из phpMyAdmin заново.

9

Re: Крокозябры

именно из командной строки. Проще, наверное все это переделать в phpMyAdmin.  Спасибо Вам за ответы.

10 (изменено: kgtu5, 2009-07-29 00:42:39)

Re: Крокозябры

Проверил таким же способом как Тимур в phpmyadmin:
SHOW VARIABLES LIKE 'character%'
Показало:
Variable_name     Value
character_set_client    utf8
character_set_connection    utf8
character_set_database    latin1
character_set_results    utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir    \usr\local\mysql\share\charsets\

Подскажите как и где можно сменить кодировку?

PS. Использую лок. сервер mangos amber 3623

11

Re: Крокозябры

Глобальные значения переменных определяются запросом.

SHOW GLOBAL VARIABLES LIKE 'char%';

Если необходимо установить кодировку cp1251 глобально (для всех скриптов), то делаем так:
Открываем конфигурационный файл MySQL (my.ini/my.cnf) и правим директивы в соответствующих разделах.

[mysql]
default-character-set=cp1251
[mysqld]
init-connect="SET NAMES cp1251"
default-character-set=cp1251

Перезапускаем MySQL и смотрим кодировку соединения снова, теперь она будет cp1251.

Как вариант, во всех скриптах имеющих проблему с кодировками необходимо найти вызов функции mysql_connect и сразу после нее добавить строку:
mysql_query('SET NAMES cp1251');

Решения будут действовать на вновь установленных скриптах, старые данные имеющие вид крякозябов необходимо перекодировать в нормальный вид. Перекодировка задача отдельная и рассматривать ее надо особо.

12

Re: Крокозябры

У меня такого файла нет. Единственный который нашел my-small.cnf
В нем только это:
[client]
port=3306
basedir = "/usr/local/mysql/"
datadir = "/usr/local/mysql/data/"
tmpdir = "/tmp"
max_connections=800
query_cache_size=74M
table_cache=1520
tmp_table_size=26M
thread_cache_size=38
myisam_max_sort_file_size=100G
myisam_max_extra_sort_file_size=100G
myisam_sort_buffer_size=26M
key_buffer_size=12M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
skip-innodb

Подскажите где искать?

13

Re: Крокозябры

kgtu5
Поищите в /etc.