| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Кодировка переменной GET |
| Автор: FredFrield 21.11.2008, 20:56 | ||||
| Как всегда проблема с русским... помучился по поиску не нашёл нечё путного... Для примера: есть два файла: s.php - основная форма отправка, метод строго GET. Кодировка файла ANSI
get.php - второй файл, Кодировка файла тажа ANSI
При отправке теста с русскими символами, переменная передаётся в $_GET['text'], но не пропускается регуляркой... Мои предположение: проблема с кодировкой самой передаваемой переменной и чувствительность, возможно, функции preg_match к X кодировкам или свои принципы метода GET ... Как решить проблему не нашёл, главные условия : метод GET и то что файлы останутся в кодировке ANSI... Кто что посоветует? как обойти трабл?))) Заранее Спасибо! |
| Автор: theworldcreator 21.11.2008, 23:45 |
| >> header("Content-type: text/html; charset=UTF-8"); Это говорит браузеру что данные будут в utf. Следовательно он и исходящие данные в него(юникод) кодирует. Если напишешь в первом файле что нибудь на русском в html-коде это побьется, так как браузер будет выводить через юникод данные в твоей кодировке. |
| Автор: unicross 22.11.2008, 05:28 | ||||||||
перед строкой Это решит проблему в вашем случае, но тем не менее проблема с русским языком останется. Если вы передаете данные в windows-1251, а заголовок отправляете utf-8, то все отправляемые браузеру данные необходимо перевести в кодировку utf-8 с помощью
s.php
get.php
|
| Автор: theworldcreator 22.11.2008, 12:14 |
| По моему вариант выше - страшный изврат, нужный непонятно где(по крайней мере я не могу придумать ситуации, когда хедер фиксирован, кодировка файлов тоже и приходится все перегонять из одной кодировки в другую), а FredFrield просто скопировал 3 строки с объявлением хедеров когда-то, не понимая что они значат, и теперь всюду пихает. http://www.google.ru/search?q=протокол+http |
| Автор: FredFrield 22.11.2008, 12:58 |
| Для theworldcreator: не сказал бы, что я нечего не понимаю... я написал на быструю руку пример и закинул хедеры, что б сымитировать проблему, та которая у меня стоит... да согласен, можно было не отключать кеширование и так далее... Если бы я не знал, что пишу, я бы спросил. Если ты сомневаешься в моих знаниях, могу доказать обратное описав всё подробно... в реале я использую динамическую подгрузку, вот почему два условия: файлы должны быть сохранение в формате ANSI и использование GET почему именно написал UTF-8 в примере? просто если б этого не сделал было б огромное количество постов использовать именно эту кодировку... Если быть точнее у меня в скрипте стоит для файла отправки ( s.php ) charset=windows-1251. и всё играет свою роль... unicross, Спасибо за ответ и идею... начну исследовать! |
| Автор: theworldcreator 22.11.2008, 14:31 | ||||||
Эта фраза свидетельствует о твоем непонимание вопроса. Когда ты отправляешь хедер браузеру у тебя НЕ меняеться кодировка, просто ты обманываешь браузер. Если бы ты спросил, как перевести данные из одной кодировке в другую, тебе бы сразу ответили.
пользуйся P.S. Крайне советую таки почитать основы. Добавлено через 3 минуты и 45 секунд Кстати можешь оставить хедеры с объявлением кодировки и настроить сервер для автоматического перекодирования файлов для пользователей(.htaccess) Но делать это вручную со всеми данными на вывод - не вариант. |
| Автор: FredFrield 22.11.2008, 14:36 | ||
проблема решена
увы заголовок в файле get.php востребователен charset=UTF-8 |
| Автор: theworldcreator 22.11.2008, 14:39 | ||
| Прекрасно. А если так: s.php
М? |
| Автор: FredFrield 22.11.2008, 14:42 | ||||
я понимаю, что таким способом обманываю браузер)
идея хорошая, если так смотреть в общих чертах, но пытался сделать, не принимало. Решил проверить твой вариант... жалко не пашет.... может быть я не точный пример привёл... Добавлено через 3 минуты и 17 секунд + мне не важен вывод на странице русского текста... а то, что мне передаётся в файл get.php и почему регулярка не обрабатывала русский, вот в чём была проблема. |
| Автор: theworldcreator 22.11.2008, 14:51 | ||
Вероятно ты сохранил get.php в кодировке, отличной от ANSI. У меня по крайней мере все работало. |
| Автор: FredFrield 22.11.2008, 17:17 | ||
у меня стандарт стоит... да я знаю, я и сам для своего примера решил проблему... но всё же для моей конкретной задачи суть проблемы, как я и догадывался, стояло в кодировке передаваемой переменной... спс всё равно за помощь. |