
08.03.2015, 18:07
|
Аспирант
|
|
Регистрация: 26.05.2014
Сообщений: 72
|
|
В чат возвращается ? вместо русских букв
Почитал несколько похожих тем, не помогло.
Мой случай таков: пользователь проходит регистрацию, авторизацию и проч. После этого он попадает на страницу с чатом, условно - chat.php
На странице имеется ссылка: http://название_сайта/chat.php?exit, когда обнуляются данные входа.
И вот что интересно:
Если сразу после регистрации пользователь начнёт писать в чат, причём неважно, вышел он и зашёл сразу или просто вошёл, с первого раза чат выводит ??? вместо русских букв (вопросов несколько, их количество ненормировано, я их нигде не подставляю и т.д). НО! Картина чудесным образом меняется, если закрыть вкладку с сайтом, вставить url страницы чата в адресную строку и зайти на него снова.
Все символы выводятся нормально, кроме битых.
Как решить эту проблему?
|
|

08.03.2015, 18:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Либо соединение SQL отдельное у чата, а его кодировка не указана, либо все что отдается в чат не соответствует кодировке. Проблему нужно решать на сервере, клиент не причем.
|
|

08.03.2015, 18:29
|
 |
Профессор
|
|
Регистрация: 07.03.2011
Сообщений: 1,140
|
|
Сообщение от Нубопрогер
|
Как решить эту проблему?
|
Начать с изучения основ в частности протокола HTTP в нем изучить как работают методы GET и POST какие заголовки http при этом используются и для чего.
Правильно указанный один из заголовков решит твою проблему.
Ну а в общем изучение основ позволит в дальнейшем не задавать такие вопросы )
|
|

08.03.2015, 18:56
|
Аспирант
|
|
Регистрация: 26.05.2014
Сообщений: 72
|
|
Сообщение от laimas
|
Либо соединение SQL отдельное у чата, а его кодировка не указана, либо все что отдается в чат не соответствует кодировке. Проблему нужно решать на сервере, клиент не причем.
|
Про сервак-то понятно, кодировка указана как utf8, а вот со вторым, я, пожалуй соглашусь.
json_encode() не передаёт русский текст (америкосы блин разработчики  ).
В майскл идёт русский текст, я этого добился, но возвращаются по-прежнему вопросы
|
|

08.03.2015, 18:57
|
Аспирант
|
|
Регистрация: 26.05.2014
Сообщений: 72
|
|
Сообщение от MallSerg
|
Начать с изучения основ в частности протокола HTTP в нем изучить как работают методы GET и POST какие заголовки http при этом используются и для чего.
Правильно указанный один из заголовков решит твою проблему.
Ну а в общем изучение основ позволит в дальнейшем не задавать такие вопросы )
|
Я спрашивал не про ?exit, это было лирическое отступление.
При них чат также не отображает русский текст
|
|

08.03.2015, 19:08
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
json_encode() не передаёт русский текст (америкосы блин разработчики ).
Что за глупости, ей по барабану какой язык, только все что не английское будет передано в unicode. В версии доступна константа JSON_UNESCAPED_UNICODE, позволяющая не кодировать в unicode, так что получите русское, два байта на символ вместо 5.
Когда вот так ????, то в первую очередь нужно проверять SQL-соединение.
|
|

08.03.2015, 19:24
|
Аспирант
|
|
Регистрация: 26.05.2014
Сообщений: 72
|
|
Сообщение от laimas
|
json_encode() не передаёт русский текст (америкосы блин разработчики ).
Что за глупости, ей по барабану какой язык, только все что не английское будет передано в unicode. В версии доступна константа JSON_UNESCAPED_UNICODE, позволяющая не кодировать в unicode, так что получите русское, два байта на символ вместо 5.
Когда вот так ????, то в первую очередь нужно проверять SQL-соединение.
|
Вот оно:
@mysql_connect('localhost', 'root', '') or die("Не могу соединиться с MySQL.");
@mysql_select_db('mafia') or die("Не могу подключиться к базе.");
@mysql_query('SET NAMES utf8;');
Последний раз редактировалось Нубопрогер, 08.03.2015 в 19:30.
|
|

08.03.2015, 19:27
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Да, все верно с SQL, но если как вы говорите, ваш сервер по умолчанию настроен на UTF, то есть Апач передает заголовки, то и глюков быть не должно.
Перед выдачей клиенту сообщения в чат передайте сами заголовок кодировки, если будут нормально, значит все таки не UTF у сервера. Если при передачи заголовка глюк не исчезнет, значит у вас путаница в кодировках.
|
|

08.03.2015, 19:31
|
Аспирант
|
|
Регистрация: 26.05.2014
Сообщений: 72
|
|
И у меня Denwer - PHP 5.3.13, а JSON_UNESCAPED_UNICODE вышло в PHP 5.4
|
|

08.03.2015, 19:34
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Выбрасывайте Денвер в помойку, умер он, ибо больше не развивается. Установите Open Server - отличный локальный сервер, с гораздо большими возможностями, и не топчущийся на месте.
В нем можно подключить любую из доступных версию РНР.
|
|
|
|