utf8 без bom

UTF8 без BOM

Создаете выгрузку из 1с на сайт с помощью текстового файла? Ничего не работает из-за BOM в UTF8. Разбираемся как создать UTF8 без BOM.

Рассмотрим абсурдный вариант без программирования, создавать файлы программно, открывать их в текстовом редакторе например notepad++ и менять кодировку. Понимая что вариант не рабочий перейдем к нормальному решению.

Что бы создать UTF8 без BOM создаем текстовый документ с BOM, потом открываем его считываем без «БУМ» и перезаписываем.

Пример функции которая это делает:

Функция ЗаписатьФайлВформате_UTF8_без_BOM(текст,полноеИмяФайла)
	// записываем в файл с символами BOM в начале файле
	ТекстовыйФайлUTF8_Bom = Новый ТекстовыйДокумент();
	ТекстовыйФайлUTF8_Bom.ДобавитьСтроку(текст);
	ТекстовыйФайлUTF8_Bom.Записать(полноеИмяФайла,"UTF-8″);
		// открываем файл и считываем символы после символов BOM
		Данные = Новый ДвоичныеДанные(полноеИмяФайла);
		Строка64=Base64Строка(Данные);
		Строка64=Прав(Строка64,СтрДлина(Строка64)-4);
		ДанныеНаЗапись=Base64Значение(Строка64);
		ДанныеНаЗапись.Записать(полноеИмяФайла);
	КонецФункции

	//Или использовать  функцию ТекстовогоДокумента в поток
	//Записать(, , , )

Дополнительные материалы:

  1. Про UTF-8 описание на википедии
  2. Про BOM на википедии

Опубликовано

в

от

Комментарии

Добавить комментарий