Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить charset данных, отправленных в форме че, на сервере 
:(
    Опции темы
Greendrake
Дата 14.9.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 14.7.2005

Репутация: 1
Всего: 6



На страницах использую отправку данных из форм методом POST. При этом часть форм отправляется как обычно, а часть - через XMLHttpRequest. Как известно, этот зверь безапелляционно кодирует отправляемые данные в UTF-8 (сама страница в windows-1251).
Сервер по умолчанию не знает, каким из этих двух способов была отправлена форма. В то же время, если она отправлена в UTF-8, полученные данные нужно преобразовать в windows-1251. Если такое преобразование делать всегда, то когда данные отправляются уже в windows-1251 - они будут потеряны. Если преобразования не делать, данные в UTF-8 будут абра-кадаброй.

Поэтому нужно как-то отпределить charset, к котором была послана форма.
Пытаюсь смотреть apache_request_headers():

Array
(
    [Accept] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    [Referer] => http://localhost/_u.html
    [Accept-Language] => ru
    [Content-Type] => application/x-www-form-urlencoded
    [Accept-Encoding] => gzip, deflate
    [User-Agent] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser; Avant Browser)
    [Host] => localhost
    [Content-Length] => 47
    [Connection] => Keep-Alive
    [Cache-Control] => no-cache
)

Но тут нету.

Можно конечно при отправке из XMLHttpRequest посылать некий ключ, указывающий что это данные в UTF-8. Можно конечно вообще полностью перейти на UTF-8. Но муторно это. Можно ли сделать сабж на сервере?
PM MAIL   Вверх
Eugene_Bond
Дата 14.9.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: 1
Всего: 4



может это поможет? http://tony2001.phpclub.net/misc/detect_charset/
PM MAIL   Вверх
IZ@TOP
Дата 14.9.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Eugene_Bond, UTF-8 Не определяет.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Eugene_Bond
Дата 14.9.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: 1
Всего: 4



IZ@TOP, дык на то он и опенсоурс чтобы доделать чего не хватает.. ;)

Добавлено @ 15:04 
да и по условию задачи достаточно определить вин1251 или нет. если нет -- считаем что утф
PM MAIL   Вверх
MuToGeN
Дата 14.9.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



пользую что-то типа
Код
            $lastR = -2;
            $rc2 = 0;
            $l = strlen($w);
            for($i = 0; $i < $l; $i++) if(ord(substr($w, $i, 1)) == ord('Р')) {
                if($i - 2 == $lastR) $rc2++;
                $lastR = $i;
            }
            if($rc2) $w = iconv('utf-8', 'cp1251', $w);



--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0713 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.