Имя: Пароль:
1C
1С v8
аналог urlencode для 8ки видел кто-нибудь?
0 Asmody
 
30.07.12
13:52
нужно через POST закинуть параметры на сервер. не выходит каменный цветок. сравнил с браузером, где всё работает, — всё аналогично, за исключением того, что параметры передаются urlencoded. А как проделать этот фокус в 1Ске?
1 pumbaEO
 
30.07.12
13:58
Функция hex(Знач Значение)
   Значение=Число(Значение);
   Если Значение<=0 Тогда
       Результат="0";
   Иначе
       Значение=Цел(Значение);
       Результат="";
       Пока Значение>0 Цикл
           Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%16 + 1,1)+Результат;
           Значение=Цел(Значение/16) ;
       КонецЦикла;
   КонецЕсли;
   Если СтрДлина(Результат) < 2 Тогда
   
       Результат = "0" + Результат;
   
   КонецЕсли;
   Возврат "%" + Результат;
КонецФункции

Функция EncodeURL(URL)
   
   // отсюда: http://www.w3.org/International/URLUTF8Encoder.java
   
   Рез = "";
   
   Для Сч = 1 По СтрДлина(URL) Цикл
       
       ch = Сред(URL,Сч,1);
       vch = КодСимвола(ch);
       
       Если ("A" <= ch ) И ( ch <= "Z") Тогда        // "A".."Z"
           Рез = Рез + ch;
       ИначеЕсли ("a" <= ch ) И ( ch <= "z") Тогда    // "a".."z"
           Рез = Рез + ch;
       ИначеЕсли ("0" <= ch ) И ( ch <= "9") Тогда    // "0".."9"
           Рез = Рез + ch;
       ИначеЕсли (ch = " ") ИЛИ ( ch = "+") Тогда            // space
           Рез = Рез + "+";
       ИначеЕсли (ch = "-" ) ИЛИ ( ch = "_") Тогда        // unreserved
           // ch == '.' || ch == '!'
           // ch == '~' || ch == '*'
           // ch == '\'' || ch == '('
           // ch == ')') Тогда
           Рез = Рез + ch;
       ИначеЕсли (vch <= 127) Тогда        // other ASCII
           Рез = Рез + hex(vch);
       ИначеЕсли (vch <= 2047) Тогда        // non-ASCII <= 0x7FF
           Рез = Рез + hex(192 + Цел(vch / 64));
           Рез = Рез + hex(128 + (vch % 64));
       Иначе                    // 0x7FF < ch <= 0xFFFF
           Рез = Рез + hex(224 + Цел(vch / 4096));
           Рез = Рез + hex(128 + (Цел(vch / 64) % 64));
           Рез = Рез + hex(128 + (vch % 64));
       КонецЕсли;
       
   КонецЦикла;
   
   Возврат Рез;

КонецФункции // ()
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший