Тема: Ошибка кодировки.
Я записываю данные о пользователе в отдельный столбец mysql. Но если вводить кириллицу, то происходит сбой кодировки. Как это можно исправить?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум PHP-MyAdmin.RU → MySQL & phpMyAdmin → Ошибка кодировки.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Я записываю данные о пользователе в отдельный столбец mysql. Но если вводить кириллицу, то происходит сбой кодировки. Как это можно исправить?
Но если вводить кириллицу, то происходит сбой кодировки.
Как именно вы записываете данные в таблицу? С помощью собственного скрипта или через phpMyAdmin?
Покажите как выглядит кириллица после записи в phpMyAdmin и на странице скрипта.
Выглядит так: Òåëåôîí
Записываю через скрипт: queryMysql("UPDATE profiles SET text='$text' where user='$user'"); (ну текст вводит юзер)
1) Страница должна иметь кодировку windows-1251.
2) Таблицы в базе данных должны иметь сравнение cp1251.
3) Не подключайте скрипты под root, обязательно создайте отдельного пользователя MySQL наделив его необходимыми привилегиями, за исключением тех, что находятся в разделе "Администрирование".
4) В скрипте, сразу после функции mysql_connect добавьте строку устанавливающую кодировку соединения с MySQL:
mysql_query('SET NAMES cp1251');
1,2,3 пункт выполнил.
Скрипты подключены под администратора БД, наделенного GRANT ALL но это не помогло
Скрипты подключены под администратора БД, наделенного GRANT ALL но это не помогло
Не надо отмечать привилегии из раздела "Администирование" при создании пользователя в phpMyAdmin. GRANT ALL и root - это одно и то же.
4-ый пункт является важным. Найдите функцию mysql_connect.
Нет это тоже не помогло(
Нет это тоже не помогло(
Что именно?
4-ый пункт является важным. Найдите функцию mysql_connect.
Не надо отмечать привилегии из раздела "Администирование" при создании пользователя в phpMyAdmin. GRANT ALL и root - это одно и то же.
а на счет этого - я же не через phpmyadmin делаю... Надо там пользователя создать?
попытался изменить конфиги mysql, вычитал на одном из сайтов - тоже не помогло...
вообще не знаю что делать(
Запросы создания пользователя и выделение глобальных прав.
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT ,
INSERT ,
UPDATE ,
DELETE ON * . * TO 'user_name'@'localhost';
Не понимаю почему вы не хотите работать с MySQL через phpMyAdmin.
Не понимаю почему вы не хотите работать с MySQL через phpMyAdmin.
Для меня это пока сложно Как нибудь в свободное время сяду, изучу и буду работать через него)
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT ,
INSERT ,
UPDATE ,
DELETE ON * . * TO 'user_name'@'localhost';
Это через phpmyadmin вводить? или можно непосредственно?
Это через phpmyadmin вводить? или можно непосредственно?
Это можно вводить и в phpMyAdmin, только пропишите имя пользователя вместо user_name и пароль вместо password.
Создал пользователя, выделил глобальные права. Ничего не изменилось.
Создал пользователя, выделил глобальные права. Ничего не изменилось.
Скрипт теперь работает через нового пользователя? Заменили данные в функции подключения к MySQL?
да
да
Покажите ваш конфигурационный файл MySQL (my.ini).
[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
Уберите эту строку, перезагрузите MySQL и все должно заработать.
skip-character-set-client-handshake
Уберите эту строку, перезагрузите MySQL и все должно заработать.
skip-character-set-client-handshake
Нет, не заработало Прямо беда какая-то...
Нет, не заработало
Как вы проверяете, что не работает? Попробуйте очистить таблицу и создать новую запись в нее с помощью скрипта.
Если не заработает, то вышлите скрипты и дамп БД на hanut@php-myadmin.ru
Отправил.
Ошибок нет, все работает. Страница на которой встраивается код из файла profile.php должна иметь мета тег кодировки.
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
Вручную поправьте строку в поле text таблицы profiles, где вместо кириллицы записаны сущности.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум PHP-MyAdmin.RU → MySQL & phpMyAdmin → Ошибка кодировки.
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 7 official extensions. Copyright © 2003–2009 PunBB.