1

Тема: Ошибка кодировки.

Я записываю данные о пользователе в отдельный столбец mysql. Но если вводить кириллицу, то происходит сбой кодировки. Как это можно исправить?

2

Re: Ошибка кодировки.

Hase сказал:

Но если вводить кириллицу, то происходит сбой кодировки.

Как именно вы записываете данные в таблицу? С помощью собственного скрипта или через phpMyAdmin?

Покажите как выглядит кириллица после записи в phpMyAdmin и на странице скрипта.

3

Re: Ошибка кодировки.

Выглядит так: Òåëåôîí
Записываю через скрипт: queryMysql("UPDATE profiles SET text='$text' where user='$user'");   (ну текст вводит юзер)

4

Re: Ошибка кодировки.

1) Страница должна иметь кодировку windows-1251.
2) Таблицы в базе данных должны иметь сравнение cp1251.
3) Не подключайте скрипты под root, обязательно создайте отдельного пользователя MySQL наделив его необходимыми привилегиями, за исключением тех, что находятся в разделе "Администрирование".
4) В скрипте, сразу после функции mysql_connect добавьте строку устанавливающую кодировку соединения с MySQL:

mysql_query('SET NAMES cp1251');

5

Re: Ошибка кодировки.

1,2,3 пункт выполнил.
Скрипты подключены под администратора БД, наделенного  GRANT ALL но это не помогло sad

6

Re: Ошибка кодировки.

Hase сказал:

Скрипты подключены под администратора БД, наделенного  GRANT ALL но это не помогло

Не надо отмечать привилегии из раздела "Администирование" при создании пользователя в phpMyAdmin. GRANT ALL и root - это одно и то же.

4-ый пункт является важным. Найдите функцию mysql_connect.

7

Re: Ошибка кодировки.

Нет это тоже не помогло(

8

Re: Ошибка кодировки.

Hase сказал:

Нет это тоже не помогло(

Что именно?

9

Re: Ошибка кодировки.

Hanut сказал:

4-ый пункт является важным. Найдите функцию mysql_connect.

10

Re: Ошибка кодировки.

Hanut сказал:

Не надо отмечать привилегии из раздела "Администирование" при создании пользователя в phpMyAdmin. GRANT ALL и root - это одно и то же.

а на счет этого - я же не через phpmyadmin делаю... Надо там пользователя создать?

11

Re: Ошибка кодировки.

попытался изменить конфиги mysql, вычитал на одном из сайтов - тоже не помогло...
вообще не знаю что делать(

12

Re: Ошибка кодировки.

Запросы создания пользователя и выделение глобальных прав.

CREATE USER 'user_name'@'localhost' IDENTIFIED BY  'password';

GRANT SELECT , 
INSERT ,
UPDATE ,
DELETE ON * . * TO  'user_name'@'localhost';

Не понимаю почему вы не хотите работать с MySQL через phpMyAdmin.

13

Re: Ошибка кодировки.

Hanut сказал:

Не понимаю почему вы не хотите работать с MySQL через phpMyAdmin.

Для меня это пока сложно hmm  Как нибудь в свободное время сяду, изучу и буду работать через него)

14

Re: Ошибка кодировки.

Hanut сказал:

CREATE USER 'user_name'@'localhost' IDENTIFIED BY  'password';

GRANT SELECT ,
INSERT ,
UPDATE ,
DELETE ON * . * TO  'user_name'@'localhost';

Это через phpmyadmin вводить? или можно непосредственно?

15

Re: Ошибка кодировки.

Hase сказал:

Это через phpmyadmin вводить? или можно непосредственно?

Это можно вводить и в phpMyAdmin, только пропишите имя пользователя вместо user_name и пароль вместо password.

16

Re: Ошибка кодировки.

Создал пользователя, выделил глобальные права. Ничего не изменилось.

17

Re: Ошибка кодировки.

Hase сказал:

Создал пользователя, выделил глобальные права. Ничего не изменилось.

Скрипт теперь работает через нового пользователя? Заменили данные в функции подключения к MySQL?

18

Re: Ошибка кодировки.

да

19

Re: Ошибка кодировки.

Hase сказал:

да

Покажите ваш конфигурационный файл MySQL (my.ini).

20

Re: Ошибка кодировки.

[client]
port                  = 3306
socket                = /tmp/mysql5.sock
default-character-set = cp1251
character-sets-dir    = /usr/local/mysql-5.1/share/charsets

[mysqld]
# Кодировка баз данных по умолчанию.
default-character-set = cp1251
init-connect = "set names cp1251"
skip-character-set-client-handshake

tmpdir                = /tmp

bind-address          = 127.0.0.1

port                  = 3306
socket                = /tmp/mysql5.sock

lower-case-table-names = 2

skip-locking
key_buffer            = 16K
max_allowed_packet    = 1M
table_cache           = 4
sort_buffer_size      = 64K
read_buffer_size      = 256K
read_rnd_buffer_size  = 256K
net_buffer_length     = 2K
thread_stack          = 128K



[mysqldump]
quick
max_allowed_packet = 16M


[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates


[isamchk]
key_buffer = 8M
sort_buffer_size = 8M


[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M


[mysqlhotcopy]
interactive-timeout

21

Re: Ошибка кодировки.

Уберите эту строку, перезагрузите MySQL и все должно заработать.

skip-character-set-client-handshake

22 (изменено: Hase, 2012-01-07 21:35:01)

Re: Ошибка кодировки.

Hanut сказал:

Уберите эту строку, перезагрузите MySQL и все должно заработать.

skip-character-set-client-handshake

Нет, не заработало  sad  Прямо беда какая-то...

23

Re: Ошибка кодировки.

Hase сказал:

Нет, не заработало

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

Если не заработает, то вышлите скрипты и дамп БД на hanut@php-myadmin.ru

24

Re: Ошибка кодировки.

Отправил.

25

Re: Ошибка кодировки.

Ошибок нет, все работает. Страница на которой встраивается код из файла profile.php должна иметь мета тег кодировки.

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

Вручную поправьте строку в поле text таблицы profiles, где вместо кириллицы записаны сущности.