Имя: Пароль:
1C
1С v8
из кириллицы в escape-последовательность
0 ivant
 
18.11.11
19:24
Приветствую.
Конечно, понимаю, что время неподходящее, но все же рискну.
Есть ли простой способ конвертации кириллический символов в escape-последовательность. Требуется отправлять JSON запрос, а он только escape понимает.
1 andrewks
 
18.11.11
19:28
jscript + escape()
2 ivant
 
18.11.11
19:36
(1) так?
//*******************************************
Процедура Сформировать()
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.language="jscript";
   Стр="Москва";
   Стрим=СоздатьОбъект("adodb.stream");
   Стрим.type=2;
   Стрим.charset="windows-1251";
   Стрим.open();
   Стрим.writetext(Стр);
   Стрим.position=0;
   Стрим.charset="iso-8859-15";
   Скрипт.AddObject("Стрим",Стрим);
   Предупреждение(Скрипт.Eval("escape(Стрим.readtext())"));
КонецПроцедуры
3 andrewks
 
18.11.11
19:37
(2) :) если сам всё знаешь, зачем тогда спрашиваешь?
4 ivant
 
18.11.11
19:53
(3) понтуюсь)

а если серьезно, то нашел "внезапно".
только вот теперь незадача - он мне вместо
\u043f\u0440\u0438\u0432\u0435\u0442
отдает
%CF%F0%E8%E2%E5%F2%21

в чем подвох?
5 ivant
 
18.11.11
19:57
(4) поменял кодировку на utf-8
стало лучше
%u041F%u0440%u0438%u0432%u0435%u0442%21
Осталось только обратный слэш получить. но это можно и СтрЗаменить, если чо
6 Asmody
 
18.11.11
19:58
(2) текст в Unicode ему подсунь, а не в 1251
7 andrewks
 
18.11.11
20:01
(6)+1
8 andrewks
 
18.11.11
20:04
посмотри ещё:
encodeURI()
encodeURIComponent()
9 ivant
 
18.11.11
20:27
ну вот, все заработало с помощью СтрЗаменить.
Только вот со знаками препинания беда - они тоже конвертируются, но на стороне сервера не обрабатываются корректно.
10 ivant
 
18.11.11
20:29
Для восьмерки скрипт выглядит так:

           ТекстСообщения = "Привет";
               
           Скрипт=Новый COMОбъект("MSScriptControl.ScriptControl");
       Скрипт.language="jscript";
       Стрим=Новый COMОбъект("adodb.stream");
       Стрим.type=2;
       Стрим.charset="Unicode";
       Стрим.open();
       Стрим.writetext(ТекстСообщения);
       Стрим.position=0;
       Стрим.charset="Unicode";
       Скрипт.AddObject("Стрим",Стрим);
       ТекстСообщения = Скрипт.Eval("escape(Стрим.readtext())");