Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP POST и кодировка

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...
 
Добавлено:
И тут эта кодировка обрабатывается некорректно, как видно из сообщения.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 15:39 26-05-2015
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1
в JavaScript при POST "encodeURIComponent();"  при приеме "decodeURIComponent();"
 
в PHP :

Код:
function decodeURIComponent($str) { $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str)); return html_entity_decode($str,null,'UTF-8');; }

 

Код:
function encodeURIComponent($str) {
    $revert = array('%21'=>'!', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')');
    return strtr(rawurlencode($str), $revert);
}

 
Добавлено:
http://stackoverflow.com/questions/1734250/

Всего записей: 2188 | Зарегистр. 25-02-2013 | Отправлено: 18:56 26-05-2015 | Исправлено: vs6262, 19:37 26-05-2015
a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо. Надо проверить.
Интересно, есть ли какой-либо автоматический способ.
 
Добавлено:
А, дошло.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 03:13 27-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1

Цитата:
И тут эта кодировка обрабатывается некорректно, как видно из сообщения

тут она такая потому, что поддерживается только 1251
 
вам же нужна работа с уникодом, по видимому. все зависит от того, с чем настроен на работу удаленный скрипт.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 03:47 27-05-2015
a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В яваскрипте от encodeURIComponent нет толку. При отправке методом POST все декодируется и заменяется на юникод, т.е. я получаю в php-скрипте обычные английские символы, о вместо ö (о с двумя двоеточиями над ним).
 
Сейчас попробую еще php аналогом закодировать, т.к. отправка запроса на целевой сайт идет непосредственно из php.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 01:26 28-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1
посмотрите в какой кодировке работает страница с формой, в такой и отправляйте - не нужно экспериментировать подбирая.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 01:36 28-05-2015
a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Оказывается дело не в этом.
Сохраненный в текстовом пхп файле текст в этой кодировке автоматом переводится в обычную латиницу.
Выходит этот вариант годится только для отправки с помощью формы.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 01:45 28-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1

Цитата:
Сохраненный в текстовом пхп файле текст в этой кодировке автоматом переводится в обычную латиницу.  

он не переводится, зависит от того, в какой кодировке и чем вы сохраняете файл.
если текстовый редактор/среда разработки не в той кодировке или не поддерживает работу с ними - так и получите.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 01:47 28-05-2015 | Исправлено: Mavrikii, 01:48 28-05-2015
a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Делаю encodeURIComponent("Einfühlungsvermögen") в php аналогом js-функции и все равно получаю обыную букву о.
Файл сохранен в ANSI.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 01:55 28-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1

Цитата:
Файл сохранен в ANSI.

не сохраняйте в ansi, сохраняйте в уникоде.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 01:56 28-05-2015
a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 не сохраняйте в ansi, сохраняйте в уникоде.  

Сохранил. Получилось!
 
А в какой кодировке должен быть другой файл, на который приходят данные из яваскрипта?
Изменил на utf-8. И получил иероглиф.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 02:10 28-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1

Цитата:
А в какой кодировке должен быть другой файл, на который приходят данные из яваскрипта?  

из какого js? я пока не знаю о чем идет речь.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:12 28-05-2015
a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Из этого файла, который я пересохранил в utf, данные яваскриптом отправляются на другой пхп-файл, из которого уже курлом идет отправка данных на целевой сайт.
 
Выяснилось, что mb_strtolower неправильно преобразует такие символы. Теперь даже не знаю что делать. Надо подумать...

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 02:22 28-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1

Цитата:
данные яваскриптом отправляются на другой пхп-файл

каким образом и при чем тут js? php на сервере, js в браузере клиента.  
у нас, к сожалению, нет телепатических способностей.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:24 28-05-2015
a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
js берет данные из хтмл который генерируется пхп-файлом.
 
Указал 'utf-8' в mb_strtolower. Вроде всё работает.
Mavrikii, большое спасибо за ответы.
 
 
Одно не понимаю. Как тут http://www.cyberforum.ru/php-beginners/thread1458756.html#post7681133 эта кодировка работает, хотя сайт в кириллической кодировке.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 02:41 28-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1

Цитата:
эта кодировка работает, хотя сайт в кириллической кодировке

потому, что там, перед генерацией страницы, все символы вне 1251 преобразуются в HTML сущности (ну или мнемоники, если по русски)
http://ru.wikipedia.org/wiki/Мнемоники_в_HTML
для этого в php есть функции
http://php.net/htmlentities
http://php.net/manual/en/function.html-entity-decode.php
 
 
собственно они преобразуются и тут, поэтому в первом своем сообщении вы увидели мнемонику, в которой лишь и первый символ & был преобразован дополнительно в &

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:46 28-05-2015 | Исправлено: Mavrikii, 02:49 28-05-2015
a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для отправки запроса на тот сайт наверное не годится.
А может быть дело в том что отправлялось всё через форму и сохранялось в СУБД, а потом оттуда извлекалось и только потом выводилось.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 02:52 28-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1

Цитата:
Для отправки запроса на тот сайт наверное не годится.  

мнемоники? это зависит от скрипта на сайте, что и в каком виде он ожидает.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:54 28-05-2015
a1eksei1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
да

Цитата:
что и в каком виде он ожидает

Вот именно. Это тайна, покрытая мраком
 
Похоже, что с пониманием кодировки у меня наступил прогресс.
Ещё раз спасибо.

Всего записей: 89 | Зарегистр. 26-05-2015 | Отправлено: 03:05 28-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a1eksei1

Цитата:
Вот именно. Это тайна, покрытая мраком

нет никакой тайны - смотрите в каком виде данные браузер отсылает (F12 в IE или Хроме, закладка сетевой активности) и делайте так же.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 03:10 28-05-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP POST и кодировка


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru