Определение кодировки, я в тупике ...

  • Автор темы Pups The RAPtor
  • Дата начала

Pups The RAPtor

Guest
Определение кодировки, я в тупике ...

ФАКи, доки, избранное, поиск читал, предупреждаю заранее :).

Собственно из избранного и пытаюсь использовать пример:

PHP:
<?php

echo "<html><head></head><body>\n";
echo "<form method=\"post\">\n";
echo "<input type=\"text\" name=\"strr\">\n";
echo "<input type=\"hidden\" name=\"win\" value=\"Тест\">\n";
echo "<input type=\"hidden\" name=\"koi\" value=\"фЕУФ\">\n";
echo "<input type=submit></form>\n<br>\n";

if ($_POST['win'] == "Тест") 
   {echo "Windows";} 
if ($_POST['koi'] == "Тест") 
   {echo "Koi";}

echo "</body></html>";
?>
Ну и получается что скрипт всегда выводит слово Windows, в какой бы кодировке я не посылал в него данные.

В чем тут дело - совсем понять не могу, мозги уже второй день кипят :).

Подскажите пожалуйста от чего это еще может зависеть? Может от настроек Апача?

Заранее спасибо.

ЗЫ: Если не в тот форум написал - уж извините, вроде всем критериям соответствую :).
 

Pups The RAPtor

Guest
Вроде появились интересные мысли по поводу

CharsetRecodeMethodsIn

Проверю, может поможет ...

Или я не туда пошел :)?
 

Demiurg

Guest
русский апач лучше не ставить, а кодировку можно выствить принудительно.
 

Pups The RAPtor

Guest
Похоже без описания задачи не обойтись :).

1. Русский Апач стоит у хостера. Хостера выбрал не я :).
2. Данные хранятся в БД MySQL. В БД используется кодировка koi8. Это все тоже заморочки хостера и заказчика.
3. Пользователи сидят под разными браузерами/ос/кодировками. Отдаю я им все в 1251. А от них получаю практичевски во всех кодировках.
4. Так вот, мне надо чтобы в БД писались данные в одной единственной кодировке. Для этого надо (иногда! если кодировка клиента не совпадает с серверной) делать перекодировку. А для этого надо определить в какой кодировке пришли данные. Все вроде тривиально, но на практике осуществить не получается :(.
5. Данные могут быть и очень маленькими, так что функция tony2001 их может обработать некорректно.

Поменять хостера мне не дадут. Равно как и заставить хостера поставить не русский Апач.
Есть еще варианты выхода из этой ситуации малой кровью :)?

Спасибо.

ЗЫ: CharsetRecodeMethodsIn не помог ...
 

Demiurg

Guest
так выставь
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
пользователм вряд ли будут сами кодировку переключать.
 

fixxxer

К.О.
Партнер клуба
Переменные окружения
Russian Apache добавляет переменные окружения, которые доступны из CGI-скриптов и модулей. Полный список таков:
CHARSET - официальное название кодировки клиента, заданное директивой CharsetDecl
SOURCE_CHARSET - кодировка документа (скрипта) - та кодировка, в которой сервер ожидает получить документ перед отправкой его клиенту.
 

rsv

Новичок
Странно это как то. Как от пользователя можно получить что то в другой кодировке т.е. не в той в которой ты ему отдал? Если только он специально ее не меняет. Если у хостера база в кои, апач руский, может у него все настроено уже и не надо и заморачиваться кодировками? Ты тестил работу системы без собственных перекодировок с разными браузерами?
 

Pups The RAPtor

Guest
Автор оригинала: Demiurg
так выставь
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
пользователм вряд ли будут сами кодировку переключать.
Так выставил, на каждой странице.
Но толку мало. Из под юниксов разных, несмотря на мету приходит в koi.
 

fixxxer

К.О.
Партнер клуба
Yurik
Во, это я и искал. :)

Pups The RAPtor
В общем, доки по Russian Apache тут - http://apache.lexa.ru/configure.html , читай

<meta .. encoding> при использовании Russian Apache надо убрать нахрен. Перекодироваться все равно будет, а юзеру еще и ручками в борузере кодировку менять придется
 

Pups The RAPtor

Guest
Автор оригинала: Yurik
.htaccess
CharsetDisable On
Не помогает.

2 fixxxer: и там и там 1251. В любом случае.

2 rsv: Пробовал без моих извращений. Получается еще хуже. Иногда сервер по три-четыре (не два как в доке по Апачу написано) раза подряд перекодирует :).
 

Pups The RAPtor

Guest
Да и еще для fixxxer: убирание меты тоже не влияет.
 

fixxxer

К.О.
Партнер клуба
Почитай доки по ссылке, которую я привел выше, там можно запретить через .htaccess вообще перекодировки. Навскидку я не помню, как именно - но приходилось один раз бороться с этим извратом (russian apache) - победил. :)
 

Pups The RAPtor

Guest
Читал. Запрет перекодировки вообще это именно CharsetDisable On, как и было написано выше.

Не помогло. А подробностей не вспомнишь?
 

Demiurg

Guest
Русский апач, как я понимаю перекодирует исходя из контента запрома, так ?
 

Pups The RAPtor

Guest
Э вроде нет. Правда я еще до конца не разобрался в нем. Сейчас документацию читаю :). Подробно. Но вроде это один из методов.
 

fixxxer

К.О.
Партнер клуба
Когда отдает, там есть конфигурционная директива, указывающая, в какой кодировке вообще всё лежит - это из какой кодировки перекодирует. А в какую - это берется из хедеров клиентских...
Когда получает данных - видимо обратная перекодировка происходит.
Насколько я понимаю и помню. :)
 

Pups The RAPtor

Guest
А вот это уже может быть и мыслью :).
Сейчас поверю ...
 
Сверху