Имя: Пароль:
1C
1С v8
Кодировать строку в последовательность байтов
0 odines
 
06.03.13
16:44
нужен аналог метода System.Text.Encoding.UTF8.GetBytes только на 1С, подскажите как можно закодировать строку в последовательность байтов и запихнуть в текст?
1 Maxus43
 
06.03.13
16:46
пиши сам...
2 NcSteel
 
06.03.13
16:47
ХранилищеЗначений?
3 Banned
 
06.03.13
16:47
Строка - это и есть последовательность байтов...
4 odines
 
06.03.13
16:50
System.Text.Encoding.UTF8.GetBytes("qwe") - дает массив 113, 119, 101...в visual studio смотрю, это что за цифры?
5 Maxus43
 
06.03.13
16:53
(4) коды символов в UTF8 есно
6 H A D G E H O G s
 
06.03.13
16:53
(4) Значения байтов, состовляющих строку.
7 H A D G E H O G s
 
06.03.13
16:53
(5) Нет.
8 H A D G E H O G s
 
06.03.13
16:53
(5) Не всегда.
9 Maxus43
 
06.03.13
16:54
wiki:UTF-8

там в табличках ответ подозреваю
10 odines
 
06.03.13
16:56
(5)(6) мне просто пост запросом на сервак нужно послать строку, из C# посылает корректно когда я эту строку посылаю пропустив через этот метод

т.е. 1.txt я пишу "qwe", а как мне это все преобразовать в байты и запихнуть в файл который я отправлю...?
11 H A D G E H O G s
 
06.03.13
16:56
(5) Для варианта автора - по факту - коды символов, но как только туда затешется кирилица - приехали, будет по 2 байта на символ.
12 wertyu
 
06.03.13
16:56
КодСимвола n раз?

Возвращаемое значение:

Тип: Число.
Код переданного символа. Код возвращается в соответствии с кодировкой Unicode.
13 H A D G E H O G s
 
06.03.13
16:57
(10) И в чем проблема то?
14 odines
 
06.03.13
16:58
(13)qwe - во что переводить? "113119101"?
15 H A D G E H O G s
 
06.03.13
16:59
(10) 1С по дефолту пишет в utf-8 и скорее всего добавляет BOM. Вот и баттхерт у сервера.
16 Maxus43
 
06.03.13
16:59
сохранить в текстовый файл в формате utf8 - не тоже самое будет?
17 H A D G E H O G s
 
06.03.13
17:02
Текст=Новый ЗаписаТекста("c:\test.txt",КодировкаТекста.Ansi);
Текст.Записать("qwe");
Текст.Закрыть();
18 Serginio1
 
06.03.13
17:08
(17)
Текст=Новый ЗаписаТекста("c:\test.txt","UTF-8 ");
Текст.Записать("qwe");
Текст.Закрыть();
19 Serginio1
 
06.03.13
17:09
Пробел добавил. Вообще лучше явно кодировку указывать, не ориентруясь на локаль.
Текст=Новый ЗаписаТекста("c:\test.txt","UTF-8");
Текст.Записать("qwe");
Текст.Закрыть();
20 H A D G E H O G s
 
06.03.13
17:09
(18) А какая разница то?
21 Serginio1
 
06.03.13
17:11
20 КодировкаТекста.Ansi<>"UTF-8"
22 wertyu
 
06.03.13
17:14
(21) да вообще не надо кодировку указывать, по-дефолту UTF-8
23 H A D G E H O G s
 
06.03.13
17:15
(21) Для латиницы монопенисуально.
24 НафНаф
 
06.03.13
17:17
Сообщить(КодСимвола("q"));
Сообщить(КодСимвола("w"));
Сообщить(КодСимвола("e"));

то и дает
25 Serginio1
 
06.03.13
17:18
A Base64 не спасет?
(23) Тогда US-ASCII
26 H A D G E H O G s
 
06.03.13
17:18
(19) Она хреначит BOM.
27 H A D G E H O G s
 
06.03.13
17:19
(25) Да, US-ASCII подойдет.
28 Serginio1
 
06.03.13
17:22
в 1С нет категории массив байт. Есть SafeArray, но его из двоичных данных не создать.
(27) На самом деле ему по его задаче нужен Base64 как что то другое он в текст запихнет
29 H A D G E H O G s
 
06.03.13
17:23
(28) Мне непонятно, что ему нужно, я не телепат.
30 Serginio1
 
06.03.13
17:24
или использовать v8: Объекты Net в IDispatch
31 odines
 
06.03.13
17:24
не знаю не получается - собственно вот о чем речь:

http://api.yandex.ru/direct/doc/examples/sc-json.xml

пример на C# пашет - но там байты отправляется:
byte[] result = wc.UploadData(wsdl, "POST", System.Text.Encoding.UTF8.GetBytes(json));

а в 1с я тот же json засовываю - из текстового файла кидаю постом:
{
   "method": "GetClientInfo",
   "param": ["agrom"],
   "locale": "ru",
   "login": "agrom",
   "application_id": "eef1c9fce4874819b8399bb0bac9b9d9",
   "token": "e4d3b4d2a7444fb387a18dda54d1c8d9"
}

яндекс пишет что неверный формат - вот я и думаю что в файле с этим json у меня проблема, толи кодировка толи еще чето
32 odines
 
06.03.13
17:25
(31)НТТР.ОтправитьДляОбработки("c:\test.txt", "/json-api/v4/", ИмяФайлаОтвета, ЗаголовокHTTP);

в файле у меня это json - но его не принимает...
33 Serginio1
 
06.03.13
17:30
30 Или использовать более продвинутый вариант http://rsdn.ru/forum/dotnet/4719475
34 odines
 
06.03.13
17:37
(33)не охота с внешними компонентами связываться, но видимо придется
35 Serginio1
 
06.03.13
17:40
(34) Это не компонента. Это  сом объект. Компилируй его по any processor и будет он у тебя работать ка под 32 так и 64 разрядном приложении.
36 Serginio1
 
06.03.13
17:42
(34) А куда деваться? 1C очень ограниченный продукт.