Роман

14
Рейтинг

Windsor77



  •   Регистрация: 30.01.2013 (11 лет назад)

  •   Был(а) на сайте: 22.04.2024

Друзья
  • Сергей Растатурин
  • Марина Федорова
  • Дмитрий Малышев
  • Евгений Комиссаров
  • Сергей
  • Андрей Волин
Подписчики 6

Рейтинг 14

Кодирование строки из Unicode в UTF-8

Инструменты и обработки Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m) Внешняя обработка (ert,epf) WEB-интеграция

Мой вариант обработки не использует никаких внешних компонент, при этом кодирование учитывает полную спецификацию UTF-8. Таким образом, в отличие от представленных здесь аналогов, можно преобразовывать не только кириллицу, а любой текст в юникоде.

2 стартмани

30.01.2013    17103    192    Windsor77    16       

14

Комментарии

DevУлучшение стандарта "Структура модуля"#24 04.10.23 20:11
(20) Поддержу, коллега. Абсолютно мозго**ная вещь, не имеющая практического смысла от слова совсем. Т.к. любые методы через F12 привык открывать и через поиск, а также окно методов модуля. Других путей нет.
DevКак формируется GUID?#77 28.08.21 21:54
(56) Уже с 8.3.10 появилась же ЧислоИзШестнадцатеричнойСтроки(), зачем столько страданий?
ОбменКодирование строки из Unicode в UTF-8#16 11.08.21 13:37
(15) Процедура в этой обработке: "Строка из Unicode в UTF-8 (быстрое Dec->Hex)"
ОбменКодирование строки из Unicode в UTF-8#14 22.08.18 7:40
(13) Наоборот, конвертирует НЕ ТОЛЬКО русские символы, но и все остальные.
ОбменКодирование строки из Unicode в UTF-8#12 30.04.13 12:34
(11) Gida, этот конвертер написан для использования в POST-запросах и URL, поэтому и диапазон "безопасных" символов сужен до разрешённого в URL-ах.
БУВыгрузка табличного документа в Excel#21 30.04.13 12:05
(18) PrinzOfMunchen, а в чём проблема с именами листов? Я сделал так (у меня динамически формирующиеся страницы, содержащие по одному ПолеТабличногоДокумента):

Код
Процедура ОсновныеДействияФормыЭкспорт(Кнопка)
   Перем   ОбщаяКнига;
   
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
   Диалог.Заголовок = "Укажите имя файла для сохранения:";
   Диалог.ПредварительныйПросмотр = Ложь;
   Диалог.ПроверятьСуществованиеФайла = Истина;
   Диалог.Фильтр = "Файл Excel (*.xls)|*.xls";

   Если Не Диалог.Выбрать() Тогда Возврат; КонецЕсли;
   ИмяФайла = Диалог.ПолноеИмяФайла;
   П = ЭлементыФормы.ПанельРегистров;
   
   //////   Инициализация экселя
   Попытка
      Эксл = Новый COMОбъект("Excel.Application");
   Исключение
      СообщитьОбОшибке("Не удалось запустить MS Excel!");
      Возврат;
   КонецПопытки; 
   Эксл.DisplayAlerts = Ложь;
   ВрФайл = ПолучитьИмяВременногоФайла("xls");
   
   Для й = 1 По П.Страницы.Количество()-1 Цикл
      ТДок = ЭлементыФормы.Найти("Результат"+й);
      Если ТДок = Неопределено Тогда
         Эксл.Quit();
         ВызватьИсключение "Ошибка нумерации листов! Не найден ""Результат"+й+"""!";
      КонецЕсли; 
      
      ///////   Сохраняем страницу
      ТДок.Записать(ВрФайл, ТипФайлаТабличногоДокумента.XLS);

      Если ОбщаяКнига = Неопределено Тогда         /////   Создаём новую книгу, в которую будем сшивать страницы
          ОбщаяКнига = Эксл.WorkBooks.Add(ВрФайл);
         ОбщаяКнига.Windows(1).DisplayWorkbookTabs = Истина;
         ОбщаяКнига.Windows(1).TabRatio = 0.35;
      Иначе         ////   копируем в новую книгу:
         ТКнига = Эксл.WorkBooks.Add(ВрФайл);
         ТКнига.Sheets(1).Copy(, ОбщаяКнига.Sheets(ОбщаяКнига.Sheets.Count));
         ТКнига.Close();
      КонецЕсли; 
      
      ИмяЛиста = П.Страницы[й].Заголовок;
      ТЛист = ОбщаяКнига.Sheets(ОбщаяКнига.Sheets.Count);
      Попытка      // переименовать
         ТЛист.Name = ИмяЛиста;
      Исключение
         ТЛист.Name = "Регистр "+й;
      КонецПопытки; 
      ТЛист.PageSetup.LeftMargin      = 44.8;
      ТЛист.PageSetup.RightMargin      = 22.4;
      ТЛист.PageSetup.TopMargin      = 22.4;
      ТЛист.PageSetup.BottomMargin   = 22.4;
      ТЛист.PageSetup.Orientation = 1;
      ТЛист.PageSetup.FitToPagesWide = 1;
      ТЛист.PageSetup.FitToPagesTall = False;
      
      УдалитьФайлы(ВрФайл);
   КонецЦикла; 
   
   ОбщаяКнига.Sheets(1).Select();
   ОбщаяКнига.SaveAs(ИмяФайла);
   ОбщаяКнига.Close();
   Эксл.Quit();
   
   Предупреждение("Экспорт в файл " + ИмяФайла + " выполнен успешно!");
КонецПроцедуры
DevДекодирование URL#8 31.01.13 12:24
(6) Murom, если интересно, вот мой вариант Текст->ULR (Unicode -> UTF-8).
DevПерекодировка строки в UTF8#12 31.01.13 11:53
(8) mymyka, этот алгоритм только для русского алфавита. Мой вариант также быстр, но при этом универсален.
ОбменКодирование строки из Unicode в UTF-8#10 31.01.13 11:47
Изменил способ конвертации Dec->Hex (берётся прямо из строки, значение - как индекс нужной пары символов), в результате прирост скорости около 60%.
ОбменКодирование строки из Unicode в UTF-8#9 31.01.13 10:45
Конечно не вариант, ведь Base64 - это поток бинарной информации, тупо "порубленный" по 6 бит; с UTF-8 другая история, там зависимость нелинейная.