[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Очень своеобразная проблема
MutanT_883
Добрый день господа! У меня появилась своеобразная проблема.
Описание проблемы:
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.

Что можно сделать в такой ситуации?
inpost
работай только в кодировке UTF-8. Про win1251 забудь.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
MutanT_883
ТОгда запрос ajax выводит криво. Пробывал оставить utf-8, тогда каждую строку в кирилице придется перевести в win1251, чтобы выводило кириицей.
MutanT_883
Да и чтобы работать в utf-8, придется главную кодировку сайта изменить, + кодировку браузера изменить.
MutanT_883
Есть еще один выход. Полученный ответ от ajax-запроса перекодировать в win1251 прямо в ajax-коде, но такого нигде не нашел.
inpost
В целом я уже выше сказал. Забудь про существование win1251

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
MutanT_883
И как тогда работать с кирилицей?
raid
Цитата
И как тогда работать с кирилицей?

В UTF-8
Цитата
Т.к. в ajax всегда используется кодировка UTF-8, то я тут же в начале файла прописываю строку:
header("Content-type: application/json; charset=windows-1251");

Я что-то логики не вижу. Вы написали: т.к. AJAX - это UTF-8, то я буду отправлять контент в win1251
Цитата
а вот в опере записываемые данные САМИ переводятся в unf-8 и только потом записываются в бд

По-моему, данные в БД пишутся не в Опере, а на сервере. Так когда же именно Опера их перекодирует: при загрузке основной страницы, при отправке AJAX-запроса или при получении ответа сервера?
inpost
MutanT_883
http://school-php.com/tricks/read/18/vyist...kodirovku-utf-8 - тут 11 правил по настройке UTF-8. Желательно скрипты с нуля создавать, и после того, как 1 раз всё проделаешь - остальные скрипты без проблем работать будут.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
MutanT_883
Прислушаюсь к вашему совету. Только что, для проверки, перекодировал гавную страницу сайта в utf-8 и в итоге я получил "������������ ;" вместо кирилицы. Как мне исходный текс сохранить в utf-8?
MutanT_883
Все, разобрался. Благодарю за помощь.
MutanT_883
Ьеперь другая проблема появилась. После сохранения index.php в юникоде все php-скрипты стали выводиться как текст. т.е. <?php include "script/online.php"; ?> теперь не присодиняет документ, а выводит просто <?php include "script/online.php"; ?>. Что делать?
raid
Вы файлы кодировали в "UTF-8 without BOM" или просто в "UTF-8"?
MutanT_883
Все, рабобрался. Перейти на utf-8 было идеальным решением. Для перекодировки использовал notepad+++
MutanT_883
без BOM
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.