MutanT_883
7.06.2013 - 22:09
Добрый день господа! У меня появилась своеобразная проблема.
Описание проблемы:
1)Я создаю запрос ajax в некий файл fail.php. Т.к. в ajax всегда используется кодировка UTF-8, то я тут же в начале файла прописываю строку:
header("Content-type: application/json; charset=windows-1251");
Теперь вся кирилица отображается нормально.
2) Теперь мне через ajax-запрос нужно добавить данные в бд mysql и вот тут начинается проблема. В хроме и IE кодировка остается заданной и кирилица записывается в базу данных как кирилица, а вот в опере записываемые данные САМИ переводятся в unf-8 и только потом записываются в бд. Использовал команду:
$text = iconv("utf-8","windows-1251",$_GET['text']);
В опере теперь кирилица сохраняется как кирилица, а вот в хроме и IE пишет, что строка и так уже в win1251.
Что можно сделать в такой ситуации?
работай только в кодировке UTF-8. Про win1251 забудь.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
MutanT_883
7.06.2013 - 22:18
ТОгда запрос ajax выводит криво. Пробывал оставить utf-8, тогда каждую строку в кирилице придется перевести в win1251, чтобы выводило кириицей.
MutanT_883
7.06.2013 - 22:21
Да и чтобы работать в utf-8, придется главную кодировку сайта изменить, + кодировку браузера изменить.
MutanT_883
7.06.2013 - 22:25
Есть еще один выход. Полученный ответ от ajax-запроса перекодировать в win1251 прямо в ajax-коде, но такого нигде не нашел.
В целом я уже выше сказал. Забудь про существование win1251
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
MutanT_883
8.06.2013 - 16:59
И как тогда работать с кирилицей?
Цитата |
И как тогда работать с кирилицей? |
В UTF-8
Цитата |
Т.к. в ajax всегда используется кодировка UTF-8, то я тут же в начале файла прописываю строку: header("Content-type: application/json; charset=windows-1251"); |
Я что-то логики не вижу. Вы написали: т.к. AJAX - это UTF-8, то я буду отправлять контент в win1251
Цитата |
а вот в опере записываемые данные САМИ переводятся в unf-8 и только потом записываются в бд |
По-моему, данные в БД пишутся не в Опере, а на сервере. Так когда же именно Опера их перекодирует: при загрузке основной страницы, при отправке AJAX-запроса или при получении ответа сервера?
MutanT_883http://school-php.com/tricks/read/18/vyist...kodirovku-utf-8 - тут 11 правил по настройке UTF-8. Желательно скрипты с нуля создавать, и после того, как 1 раз всё проделаешь - остальные скрипты без проблем работать будут.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
MutanT_883
9.06.2013 - 00:15
Прислушаюсь к вашему совету. Только что, для проверки, перекодировал гавную страницу сайта в utf-8 и в итоге я получил "������������ ;" вместо кирилицы. Как мне исходный текс сохранить в utf-8?
MutanT_883
9.06.2013 - 00:33
Все, разобрался. Благодарю за помощь.
MutanT_883
9.06.2013 - 00:39
Ьеперь другая проблема появилась. После сохранения index.php в юникоде все php-скрипты стали выводиться как текст. т.е. <?php include "script/online.php"; ?> теперь не присодиняет документ, а выводит просто <?php include "script/online.php"; ?>. Что делать?
Вы файлы кодировали в "UTF-8 without BOM" или просто в "UTF-8"?
MutanT_883
9.06.2013 - 16:35
Все, рабобрался. Перейти на utf-8 было идеальным решением. Для перекодировки использовал notepad+++
MutanT_883
9.06.2013 - 16:35
без BOM
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.