Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Form кодирование
Новая тема
Ответить
цитата
29/09/10 в 19:32
EvGenius
есть страница с charset=iso-8859-1 и форма на ней,
пишем допустим в поле
a b c а б в
- англ. и рус. буквы.
отправляем php скрипту, тот получает
a b c а б в
если в заголовке страницы вписать charset=windows-1251, то приходит нормально
a b c а б в
задача в том чтобы при западной кодировке отфильтровать все не англ. символы.
а выходит что скрипт получает
a b c а б в
где нет руских букв. символы
&
,
#
и другие спецсимволы фильтровать не вариант. надо именно неангл. буквы присекать.
как же быть? конвертировать уникод обратно не вариант, т.к. вместо рус могут быть любые другие и я не узнаю никак что за кодировку писать в iconv
желательно заставить как-то форму слать данные как есть, без кодирования в utf
реально как-то сделать?
цитата
29/09/10 в 19:43
Stek
Данные отсылает браузер, отсылает в зависимости от текущей кодировки .
utf-8 спасет отца русской демократии, или на сервере опять превращать а в русские буквы, а потом обрабатывать.
цитата
29/09/10 в 20:00
EvGenius
-2
еще раз читаем.
вместо русских могут быть любые другие, поэтому конвертировать в
русские
не катит
кодировку страницы оставляем как есть, но надо заставить форму (браузер) не конвертировать ничего.
уже пробовал у формы дописать enctype="application/octet-stream"
все равно зараза конвертирует.
чую что можно как-то заставить слать данные как есть, файлы же както шлются формами.
цитата
29/09/10 в 20:21
Stek
Можешь еще минусовать, это не серчэнджин с дрочерами на свой рейтинг. Только вот нах тебе что то объяснять, когда ты в ответ посылаешь.
цитата
29/09/10 в 20:29
EvGenius
Оффтопик:
та ради бога, я просто прикололся. никогда не минусовал никого
вернул тебе +2 раз уж так важно.
послал? разве что к первому посту.
вопрос как заставить форму
не конвертировать
и что конвертировать обратно не вариант, а ответ - надо сконвертировать обратно.
не по делу минус разве?
цитата
29/09/10 в 20:49
Lead
пробуй utf-16.
цитата
29/09/10 в 21:09
FXIX
кстати интересный вопрос. разберись что за кодирование кодирует русишь буквы в а б итд. урлкодирование? если пост-запрос то вроде не кодирует, если гет то кодирует. если урлкодирование то всю строку через urldecode()
цитата
29/09/10 в 21:10
EvGenius
да нет никакого кода, ничего не перекодируется нигде.
форма сама по-умолчанию все конвертирует
вот пример 1.php
Цитата:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" text/html;charset=utf-8">
</head>
<body>
<form action="1.php" method="post">
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
<?
$f=fopen('1.txt','a');
fputs($f,$_POST['name']."\n");
fclose($f);
?>
теперь 3 раза пробуем ввести
abc абв
с разными кодировками на странице
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<meta http-equiv="Content-Type" content="text/html;charset=windows-1251">
и получаем 1.txt такой:
Цитата:
abc Р°Р+Р_
abc абв
abc абв
т.е. как есть передает только когда правильная кодировка стоит. но я же не угадаю какие символы введет юзер. может там иероглифы вообще будут.
цитата
29/09/10 в 21:23
EvGenius
http://htmlweb.ru/other/http_protocol.php
Цитата:
Второй способ кодирования - это отсутствие кодирования. Например, кодировать не нужно для пересылки файлов. Он указывается в форме (только для POST) так:
<form method="post" enctype="multipart/form-data">
В этом случае при отправке данных на сервер ничего не кодируется. А сервер, со своей стороны, посмотрев на "Content-Type: multipart/form-data", поймет, что пришло.
пробовал - ничего не меняется
цитата
29/09/10 в 21:53
EvGenius
пока решение только поставить на странице utf-8 кодировку
только так скрипт вроде начинает различать англ и не англ символы
цитата
30/09/10 в 10:46
Noobus Boobus
Код:
$text = preg_replace("/&#([0-9]{4});/","",$text);
Это как вариант %)
Новая тема
Ответить
Эта страница в полной версии