Русский язык и MySQL (Debian 4.0)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Русский язык и MySQL

Сообщение amorphius »

Нашел миллион подобных тем на этом да и на других форумах. Сделал все как советуют но все равно русский не распознается:(
Вот мой my.cnf:

Код: Выделить всё

[mysqld_safe]
socket        = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
default-character-set=cp1251
default-collation = cp1251_general_ci
character-sets-dir=/usr/share/mysql/charsets
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
port        = 3306
basedir        = /usr
datadir        = /var/lib/mysql
tmpdir        = /tmp
language    = /usr/share/mysql/english
skip-external-locking
bind-address        = 127.0.0.1
key_buffer        = 16M
max_allowed_packet    = 16M
thread_stack        = 128K
thread_cache_size    = 8
query_cache_limit       = 1M
query_cache_size        = 16M
log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size         = 100M
skip-bdb

[mysqldump]
quick
quote-names
max_allowed_packet    = 16M

[mysql]
default-character-set=cp1251

[isamchk]
key_buffer        = 16M
!includedir /etc/mysql/conf.d/

Пробовал добавлять в базу и с помощью phpmyadmin и с помощью собственного скрипта питоновского - все равно русский не хочет видеть.
Спасибо сказали:
Kam
Сообщения: 67
ОС: Fedora, CentOS

Re: Русский язык и MySQL

Сообщение Kam »

можно еще
[mysqld]
init_connect='SET NAMES cp1251'

В какой кодировке в пхпмайадмине добавляете ?
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: Русский язык и MySQL

Сообщение DaemonTux »

Что всех так тянет на cp1251? utf8 уже не модно?
Vladivostok Linux User Group
Спасибо сказали:
Devon
Сообщения: 101
ОС: Debian, Mac, SlackHat :)

Re: Русский язык и MySQL

Сообщение Devon »

Kam
На сколько я помню при работе от рута в мускуле этот параметр игнорируется.

Вообще в бытность когда я довольно много писал на ПХП, set names в начале каждого скрипта были как "Отче наш", независимо от кодировки. Для себя - всегда юникод, для других - часто cp1251, ибо так уже было сделано до меня. Попробуйте использовать set names, если не поможет - то тогда полтергейст. У меня на ноуте всю жизнь Дебиан живет несмотря на то, с какими ОС на серверах в данный момент работаю, и проблем не было.
Спасибо сказали:
Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Re: Русский язык и MySQL

Сообщение amorphius »

Devon писал(а):
26.01.2009 16:14
Kam
На сколько я помню при работе от рута в мускуле этот параметр игнорируется.

Вообще в бытность когда я довольно много писал на ПХП, set names в начале каждого скрипта были как "Отче наш", независимо от кодировки. Для себя - всегда юникод, для других - часто cp1251, ибо так уже было сделано до меня. Попробуйте использовать set names, если не поможет - то тогда полтергейст. У меня на ноуте всю жизнь Дебиан живет несмотря на то, с какими ОС на серверах в данный момент работаю, и проблем не было.

эээ, поподробнее пожалуйста:)
Спасибо сказали:
Devon
Сообщения: 101
ОС: Debian, Mac, SlackHat :)

Re: Русский язык и MySQL

Сообщение Devon »

В начале каждого скрипта после соединения с базой выполнить SET NAMES cp1251. В разных языках разный синтаксис вызова запросов к бд. В ПХП выглядит типа того:

Код: Выделить всё

mysql_query("set names 'utf8'",$connection);


Мануал по кодировкам коннекта имеет место быть тут:
http://dev.mysql.com/doc/refman/5.1/en/cha...connection.html
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Русский язык и MySQL

Сообщение rm_ »

Не знаю, кто такой set names, но мне проблему с кодировкой решить помогла следующая строка (PHP):

Код: Выделить всё

mysql_set_charset('utf8');
Спасибо сказали:
Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Re: Русский язык и MySQL

Сообщение amorphius »

Kam писал(а):
26.01.2009 16:01
можно еще
[mysqld]
init_connect='SET NAMES cp1251'

В какой кодировке в пхпмайадмине добавляете ?

в том то и дело что сам не знаю) там куча кодировок, и я без понятия какую ставить чтоб отображался русский поэтому пробую методом научного тыка
utf8 например в пхпмайадмине это какая кодировка? ибо там их 21 штука...
далее... ни SET NAMES cp1251, ни SET CHARSET utf8 не помогли, все равно иероглифы в базе, просто теперь иероглифы разной кодировки, тестил не с помощью скрипта, а из консоли вводил команды
Спасибо сказали:
Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Re: Русский язык и MySQL

Сообщение amorphius »

о! кое что уже получилось. ввел в консоли SET NAMES UTF8 а потом SET CHARSET UTF8 и кодировки везде в базе поменял на utf8, теперь получается из командной строки и в пхпмайадмине вводить русский и он распознается, но скрипт питоновский почему то не хочет:( хотя по сути прописал все что и в командной строке:

Код: Выделить всё

c = db.cursor()
query = "SET NAMES utf8"
c.execute(query)
query = "SET CHARSET utf8"
c.execute(query)
Спасибо сказали: