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

25.02.19

Интеграция - WEB-интеграция

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Строка из Unicode в UTF-8 (быстрое Dec->Hex)
.epf 7,18Kb
150
150 Скачать (2 SM) Купить за 2 150 руб.
Строка из Unicode в UTF-8
.epf 6,75Kb
47
47 Скачать (1 SM) Купить за 1 850 руб.

В поисках решения проблемы передачи в POST/GET-запросы не-ASCII текста из 1С, так и не смог найти универсальной и алгоритмически красивой версии. Поэтому скромно представляю на ваш суд свой вариант.

upd: Изменил способ конвертации Dec->Hex, в результате прирост скорости около 60%.

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2833    3    0    

11

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    34904    68    45    

27

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    2592    2    3    

5

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    975    5    2    

7

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    19192    23    22    

20

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    18959    54    50    

31

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    4376    3    2    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. pbazeliuk 1971 30.01.13 20:12 Сейчас в теме
Осталось только оптимизировать, подозреваю что не такая уж и быстрая конвертация.

А неразрывный пробел правильно отработается? Код символа - 160.
2. Windsor77 14 30.01.13 23:46 Сейчас в теме
Ну не знаю, конечно. Не успел ещё замер производительности сделать, в ближайшее время хочется сравнить.

Поскольку 1С-ка выдаёт настоящий код символа в Юникоде, а исключения из кодируемых составляют только указанные в спецификации символы (пробел, кстати, можно и исключить, но ведь стандарт подразумевает отображение в виде "+") - т.е. буквы латиницы, цифры и несколько знаков - остальные символы переводятся именно в соответствии с алгоритмом, суть которого примерно та же, что и Base64. Поэтому и неразрывный пробел должен совпасть. Вы не проверяли?
3. Windsor77 14 31.01.13 01:00 Сейчас в теме
Замер производительности показал, что 40-45% времени пожирает конвертер dec->hex...
4. ksb 31.01.13 07:26 Сейчас в теме
Подскажите несведущим чем Unicode отличается от UTF-8
поему у них обоих ведь 2 байта на символ, что позволяет закодировать все вариации
5. andrewks 1376 31.01.13 07:45 Сейчас в теме
(4) ksb, в юникод - 2 байта на символ. в utf-8 - от 1 и выше байт на символ (английские - 1, русские - 2, азиатские вообще по 3-4 занимают)
Windsor77; +1 Ответить
6. ksb 31.01.13 09:12 Сейчас в теме
(5) Пасиб. а ещё вопрос
а как проги разбирают, что в потоке символов utf-8 этот символ займет 1 байт а другой 4 байта, они разделены каким то маркером ?
7. andrewks 1376 31.01.13 09:17 Сейчас в теме
8. AlX0id 31.01.13 10:23 Сейчас в теме
А если в Base64 загнать - не вариант?
9. Windsor77 14 31.01.13 10:45 Сейчас в теме
Конечно не вариант, ведь Base64 - это поток бинарной информации, тупо "порубленный" по 6 бит; с UTF-8 другая история, там зависимость нелинейная.
10. Windsor77 14 31.01.13 11:47 Сейчас в теме
Изменил способ конвертации Dec->Hex (берётся прямо из строки, значение - как индекс нужной пары символов), в результате прирост скорости около 60%.
15. dctvghbdtn 28.07.21 18:18 Сейчас в теме
(10) Можете опубликовать свой вариант? Спасибо.
16. Windsor77 14 11.08.21 13:37 Сейчас в теме
(15) Процедура в этой обработке: "Строка из Unicode в UTF-8 (быстрое Dec->Hex)"
11. Gida 05.02.13 12:30 Сейчас в теме
А символы @#$%^&*() разве не являются безопасными? в статье из википедии пишут что сиволы 00-7F однозначно соответствуют ASCII
12. Windsor77 14 30.04.13 12:34 Сейчас в теме
(11) Gida, этот конвертер написан для использования в POST-запросах и URL, поэтому и диапазон "безопасных" символов сужен до разрешённого в URL-ах.
13. TUTSIC923 21.08.18 18:56 Сейчас в теме
русские символы я так понял , он не конвертирует ...
14. Windsor77 14 22.08.18 07:40 Сейчас в теме
(13) Наоборот, конвертирует НЕ ТОЛЬКО русские символы, но и все остальные.
Оставьте свое сообщение