С нами с 21.09.02
Сообщения: 2347
Рейтинг: 1383
|
Добавлено: 29/09/10 в 19:32 |
есть страница с charset=iso-8859-1 и форма на ней,
пишем допустим в поле a b c а б в - англ. и рус. буквы.
отправляем php скрипту, тот получает a b c а б в
если в заголовке страницы вписать charset=windows-1251, то приходит нормально a b c а б в
задача в том чтобы при западной кодировке отфильтровать все не англ. символы.
а выходит что скрипт получает a b c а б в где нет руских букв. символы & , # и другие спецсимволы фильтровать не вариант. надо именно неангл. буквы присекать.
как же быть? конвертировать уникод обратно не вариант, т.к. вместо рус могут быть любые другие и я не узнаю никак что за кодировку писать в iconv
желательно заставить как-то форму слать данные как есть, без кодирования в utf
реально как-то сделать?
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 29/09/10 в 19:43 |
Данные отсылает браузер, отсылает в зависимости от текущей кодировки .
utf-8 спасет отца русской демократии, или на сервере опять превращать а в русские буквы, а потом обрабатывать.
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
-2
|
|
|
С нами с 21.09.02
Сообщения: 2347
Рейтинг: 1383
|
Добавлено: 29/09/10 в 20:00 |
-2
еще раз читаем.
вместо русских могут быть любые другие, поэтому конвертировать в русские не катит
кодировку страницы оставляем как есть, но надо заставить форму (браузер) не конвертировать ничего.
уже пробовал у формы дописать enctype="application/octet-stream"
все равно зараза конвертирует.
чую что можно как-то заставить слать данные как есть, файлы же както шлются формами.
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 29/09/10 в 20:21 |
Можешь еще минусовать, это не серчэнджин с дрочерами на свой рейтинг. Только вот нах тебе что то объяснять, когда ты в ответ посылаешь.
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
2
|
|
|
С нами с 21.09.02
Сообщения: 2347
Рейтинг: 1383
|
Добавлено: 29/09/10 в 20:29 |
Оффтопик: та ради бога, я просто прикололся. никогда не минусовал никого
вернул тебе +2 раз уж так важно.
послал? разве что к первому посту.
вопрос как заставить форму не конвертировать и что конвертировать обратно не вариант, а ответ - надо сконвертировать обратно.
не по делу минус разве?
|
|
|
|
С нами с 16.10.02
Сообщения: 276
Рейтинг: 296
|
Добавлено: 29/09/10 в 20:49 |
пробуй utf-16.
|
|
|
|
Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 29/09/10 в 21:09 |
кстати интересный вопрос. разберись что за кодирование кодирует русишь буквы в а б итд. урлкодирование? если пост-запрос то вроде не кодирует, если гет то кодирует. если урлкодирование то всю строку через urldecode()
|
|
пришел к победе коммунистического труда
|
0
|
|
|
С нами с 21.09.02
Сообщения: 2347
Рейтинг: 1383
|
Добавлено: 29/09/10 в 21:10 |
да нет никакого кода, ничего не перекодируется нигде.
форма сама по-умолчанию все конвертирует
вот пример 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 абв |
т.е. как есть передает только когда правильная кодировка стоит. но я же не угадаю какие символы введет юзер. может там иероглифы вообще будут.
|
|
|
|
С нами с 21.09.02
Сообщения: 2347
Рейтинг: 1383
|
Добавлено: 29/09/10 в 21:23 |
http://htmlweb.ru/other/http_protocol.php
Цитата: | Второй способ кодирования - это отсутствие кодирования. Например, кодировать не нужно для пересылки файлов. Он указывается в форме (только для POST) так:
<form method="post" enctype="multipart/form-data">
В этом случае при отправке данных на сервер ничего не кодируется. А сервер, со своей стороны, посмотрев на "Content-Type: multipart/form-data", поймет, что пришло. |
пробовал - ничего не меняется
|
|
|
|
С нами с 21.09.02
Сообщения: 2347
Рейтинг: 1383
|
Добавлено: 29/09/10 в 21:53 |
пока решение только поставить на странице utf-8 кодировку
только так скрипт вроде начинает различать англ и не англ символы
|
|
|
|
С нами с 16.10.09
Сообщения: 343
Рейтинг: 419
|
Добавлено: 30/09/10 в 10:46 |
Код: |
$text = preg_replace("/&#([0-9]{4});/","",$text);
|
Это как вариант %)
|
|
|
|