на главнуюВсе эхи RU.PERL
войти ?

Странное чтение из STDIN

От Gennadij Pastuhov (2:5036/26) к Eugene Grosbein

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


Рад всех приветствовать! А особенно - Eugene!

Четверг июня 09 22 01:26 Eugene Grosbein писал к Gennadij Pastuhov:

GP>> $ curl '172.25.0.5:8080/preset-add' -H 'Content-Type:
GP>> application/json' --data
GP>> '{"name":"пресет4","name_en":"preset4"}'
GP>> FM::Common::WebIn155 form_data $VAR1 =
GP>> "{\"name\":\"\x{43f}\x{440}\x{435}\x{441}\x{435}\x{442}4\",\"name
GP>> _en\":\"preset4\"}";
GP>> А потом вдруг всё ломается и переходит на чтение побайтово:
GP>> $ curl '172.25.0.5:8080/preset-add' -H 'Content-Type:
GP>> application/json' --data
GP>> '{"name":"пресет5","name_en":"preset5"}'
GP>> FM::Common::WebIn155 form_data $VAR1 =
GP>> '{"name":"??N?чN?чN5","name_en":"preset5"}';
GP>> И последующие запросы идут только в таком формате. Что это может
GP>> быть?
EG> Воообще говоря, так делать не положено - задавать
EG> Content-Type с данными не в ASCII без указания кодировки.

В наше время вряд ли можно ждать что-то, кроме utf-8.

EG> Hа стороне сервера при этом возможны разнообразные глюки и формально,
EG> сервер имеет на это право. Может пытаться или не пытаться продетектить
EG> Byte Order Mark (BOM: 0xEF, 0xBB,0xBF), может полагаться на дефолты и
EG> т.д.

Сервер - это апач? В этой системе он стоит перед бэкендом.

EG> По нормальному положено указывать кодировку:

EG> ... -H 'Content-Type: application/json; charset=utf-8'
EG> --data-urlencode ...

EG> Потому что --data предназначено для передачи параметров в CGI
EG> и использует application/x-www-form-urlencoded,
EG> а тебе надо --data-urlencode.

С последним пришло
FM::Common::WebIn154 form_data $VAR1 = '%7B%22name%22%3A%22%D0%BF%D1%80%D0%B5%D1%81%D0%B5%D1%820%22%2C%22name_en%22%3A%22preset0%22%7D';

Теперь нужно разurlencodить. В результате utf вытащить не удалось. В-общем, поставил принудительный decode_utf8 на все входящие данные, вроде все вышенаписанные команды стали отрабатывать корректно. Спасибо!

... Jonny wanna live

--- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
* Origin: Тяжело в лечении - легко в гробу (2:5036/26)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.PERL?msgid=2:5036/26+62a1b9dd