Имя: Пароль:
1C
1С v8
Преобразование строки в BASE64
,
0 zloba
 
11.09.19
16:35
Добрый день.
Пытаюсь преобразовать строку в BASE64, получаю левый символ...

     ВременныйФайл = ПолучитьИмяВременногоФайла();
    
     //UTF-8 без BOM
     ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл, "CESU-8", "", Ложь, "");
     ЗаписьТекста.Записать("{""id"": """ + id + """, ""password"": """ + hash +"""}");
     ЗаписьТекста.Закрыть();
    
     ДД_Файла = Новый ДвоичныеДанные(ВременныйФайл);
     СтрокаBase64 = Base64Строка(ДД_Файла);





Ожидание:
eyJpZCI6ICLQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCIsICJwYXNzd29yZCI6ICJhMTBiMTI1YTg5N2VjOGU5NTQwNTczZGU2YjI3MDJhZSJ9

Реальность:
eyJpZCI6ICLQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCIsICJwYXNzd29yZCI6¶ICJhMTBiMTI1YTg5N2VjOGU5NTQwNTczZGU2YjI3MDJhZSJ9

Через поток ситуация такая же.
Кто-нибудь спотыкался об это?
1 MM
 
11.09.19
16:55
СтрЗаменить(СтрокаBase64, Символы.ВК+Символы.ПС, "") - не помогает?
Да и CESU-8 не выглядит правильным вместо ЗаписатьBOM=ложь.
2 tejije
 
11.09.19
17:00
(0)
Функция СтрокаВBase64(СтрокаДанных) Экспорт

    Поток = Новый ПотокВПамяти;
    Запись = Новый ЗаписьДанных(Поток, КодировкаТекста.UTF8);
    Запись.ЗаписатьСимволы(СтрокаДанных);
    Запись.Закрыть();
    ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    СтрокаФорматBase64 = Base64Строка(ДвоичныеДанные);
    СтрокаФорматBase64 = СтрЗаменить(СтрокаФорматBase64, Символы.ВК, ""); // убираем ВК
    СтрокаФорматBase64 = СтрЗаменить(СтрокаФорматBase64, Символы.ПС, ""); // убираем ПС

    Возврат СтрокаФорматBase64;

КонецФункции

Функция СтрокаИзBase64(СтрокаФорматBase64) Экспорт

    ДвоичныеДанные = Base64Значение(СтрокаФорматBase64);
    Поток = Новый ПотокВПамяти;
    Запись = Новый ЗаписьДанных(Поток, КодировкаТекста.UTF8);
    Запись.Записать(ДвоичныеДанные);
    Запись.Закрыть();
    Данные = Новый ЧтениеДанных(Поток, КодировкаТекста.UTF8);
    СтрокаДанных = "";
    Пока Не Данные.ЧтениеЗавершено Цикл
        СтрокаДанных = СтрокаДанных + Данные.ПрочитатьСтроку();
    КонецЦикла;
    Данные.Закрыть();
    Поток.Закрыть();

    Возврат СтрокаДанных;

КонецФункции

не благодари)
3 zloba
 
11.09.19
17:03
Спасибо
4 tejije
 
11.09.19
17:04
(3) пока ты добрый) укради у кого нибудь кружку) - Дайте нахаляву фирменную кружку 1с!