Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Непонятная проблема с кодировкой


Автор: tikitiki 24.6.2012, 21:34
Приветствую.
Долго мучался. Решил написать сюда. Много перепробовал, но проблема не исчезает.
Скрипт писал аккуратно. Есть в нём часть, отвечающая за авторизацию. Там простая
форма авторизации.Проблема с ней.
Кодировка скрипта windows-1251. Внутренняя кодировка mysql cp1251. Сопоставление 
соединения cp1251_general_ci.
Ошибка такова: занёс в ручную логин и пароль в бд "q" и "q" соответственно. Когда
вводишь их в форме, то скрипт пишет "не правильная пара "логин-пароль"". А если ввести
логин "й" и пароль "й", то происходит успешная авторизация.
Скорее всего utf8 и cp1251 перепутались местами.
Пробовал менять кодировку скрипта, кодировку данных формы авторизации, перекодировку
полученных данных из этой формы в др. скрипте. В результате ошибка осталась именно
такой, какой и была.
Стоит denwer3. Думаю, что ошибка в скрипте, но где? 


Автор: targetkeeper 24.6.2012, 22:09
На сто процентов не уверен, но думаю что нет связи между символами "й" и "q", кроме того, что они набираются одной клавишей. Отсюда, наверное, и стоит начать поиск проблемы.
Попробуйте по новой вбить все данные с отключенным PuntoSwitcher и прочими программами, способными влиять на раскладку.

Чтобы до конца отсечь вероятность проблем с utf8, еще три варианта:
1. Форма не передается через ajax? Если передается обычным запросом, то все нормально.
2. В firefox сайт открывается нормально? Если без проблем с кодировкой, то в конфиге апача стоит кодировка по-умолчанию cp1251 или вообще не установлена - тоже все нормально.
3. Проверьте кодировку базы данных, таблицы и используемых полей таблицы.

Автор: Aliance 25.6.2012, 09:41
Если проблема в скрипте, передающем данные через ajax, то у меня была аналогичная проблема. Напишите так ли это, стоит ли мне искать тогдатошнее решение.

Автор: tikitiki 26.6.2012, 05:50
to targetkeeper, 
1) Ajax не используется.
2) В firefox открывается нормально. В конфиге apache стоит:
Код

AddDefaultCharset windows-1251

3) Везде кодировка cp1251_general_ci.
Пока ошибка остаётся та же.

Автор: ikamen 5.8.2012, 07:44
у меня постоянно проблемы с кодировкой, приходится все сообщения в пхп коде писать на англ...думал что сохраняю не в той кодировке...перепробовал все но никак

Автор: kuzyait 2.2.2013, 19:13
когда подключитесь к базе - делайте сразу запрос :   mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error codirovka: )". mysql_error());  т.е. устанавливаете нужную кодировку. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)