bdd2

Запись текста в кодировке UTF-8 без BOM средствами платформы 1С

Опубликовал mc2 в раздел Программирование - Универсальные функции

Запись текста в кодировке UTF-8 без BOM средствами платформы 1С (без "извращений")

Собствено говоря это решение  мной уже было опубликовано в виде коментария к статье http://infostart.ru/public/137454/
Но вчера я получил в личку письмо, из которого следует, что оно достойно отдельной публикации.

Вот собственно говоря само решение:

ЗТ = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
ЗТ.Закрыть();
ЗТ = Новый ЗаписьТекста(ИмяФайла,,, Истина, Символы.ПС);
ЗТ.Записать(Данные);
ЗТ.Закрыть();

См. также

Добавить вознаграждение
Комментарии
1. Ярослав Радкевич (WKBAPKA) 199 06.02.14 16:16 Сейчас в теме
2. Ярослав Радкевич (WKBAPKA) 199 06.02.14 16:17 Сейчас в теме
ставлю минус за оформление публикации
3. Павел С (pavel_pss) 158 11.02.14 18:26 Сейчас в теме
(2) WKBAPKA,
Не нравится оформление публикации не смотри.
4. Евгений Сосна (pumbaE) 511 12.02.14 10:29 Сейчас в теме
Ты точно utf с ansi не попутал? минус заслуженный, лучше бы решение с base64 привел.

p.s.: Пользователи любых других национальных языков просто в восторге, от такого фигового решения.
5. mc2 6 12.02.14 15:46 Сейчас в теме
(4) pumbaE, Если Вы не понимаете о чем идет речь, то нечего умничать. Для таких непонятливых поясняю: есть задача записать файл в кодировке UTF-8 без BOM, т.к. он не всегда корректно распознается сторонними приложениями, например, при передаче POST-запроса через HTTP-соединение. Приведенный алгоритм это делает наиболее простым способом. Если вам известен более простой способ, то лучше его опубликовать, чем вводить в заблуждение других людей.

Для совсем непонятливых: ВОМ это 3 символа, которые добавляются в начало файла для автоматического определения кодировки.

P.S. "Тыкать" можете своим друзьям, а здесь этого не надо делать.
6. Евгений Сосна (pumbaE) 511 12.02.14 16:22 Сейчас в теме
(5) mc2, повторяю таблица кодировки UTF-8 содержит больше символов чем ANSI, поэтому преобразование к ANSI может не только убрать первые 3 байта, но и испортить содержание документа. В той же публикации более элегантное решение http://forum.infostart.ru/forum24/topic62033/message707087/#message707087

p.s.: это интернет, могут и послать.
7. mc2 6 12.02.14 23:16 Сейчас в теме
(6) pumbaE, 1. В моем алгоритме НЕТ вообще нет преобразований кодировок! Прочитайте документацию по языку программирования 1С. Суть алгоритма в том, что сначала создается пустой файл в кодировке ANSI, который не содержит ВОМ, а затем к нему дописываются данные в кодировке UTF-8. Это происходит без каких-либо преобразований. Естественно, при дописывании данных ВОМ не пишется.

2. Это реально работает, сам давно использую. Прежде чем писать всякую чушь, надо было хотя бы разобраться или проверить.

3. Алгоритм с отрезанием ВОМ однозначно является более громоздким и ресурсоемким.

P.S. Насчет "послать" - это все-таки модерируемый технический форум, за это могут и "забанить", т.ч. стоит это учитывать при выборе стиля общения...
1ckorolev; Hexed; nick-max; slavikss; +4 Ответить
8. Александр Г (Hexed) 3 09.08.16 16:09 Сейчас в теме
9. Казаков Сергей (1ckorolev) 17.11.16 13:52 Сейчас в теме
Спасибо! Помогло!

Возможно полезное дополнение. Батники не работают нормально по умолчанию с utf-8 поэтому первой строчкой можно поставить:
"chcp 65001" .
10. Сергей Смирнов (Serginio) 499 17.11.16 14:14 Сейчас в теме
Функция Кодировка_UTF8_NoBOM()
    Возврат "CESU-8";
КонецФункции