Удаление UTF-8 BOM в начале текста (string.strip_utf8_bom)
Объявление
обработанный_текст = string.strip_utf8_bom(исходный_текст)
Параметры
- Исходный текст
Строка, текст, из которого нужно удалить символы UTF-8 BOM.
Возвращаемое значение
- Обработанный текст
Строка, текст после удаления символов UTF-8 BOM.
Описание
UTF-8 BOM представлен тремя невидимыми символами в начале документа:
"\xEF\xBB\xBF"(в исходном коде Lua строка, начинающаяся с\xи содержащая после неё две шестнадцатеричные цифры, обозначает один байт с таким кодом. Например,\x58обозначает символX; см. печатаемую часть в статье «Кодировка ASCII»).
Пример
txt = "\xEF\xBB\xBFXXTouch"
sys.alert(txt..', '..#txt) -- Вывод "XXTouch, 10"
--
txt = string.strip_utf8_bom(txt)
sys.alert(txt..', '..#txt) -- Вывод "XXTouch, 7"
Примечание: приведённый выше код использует функцию не из этой главы — sys.alert.
Полезные сведения
UTF-8 не требует BOM, хотя стандарт Unicode допускает использование BOM в UTF-8.
Стандартной формой является UTF-8 без BOM; размещение BOM в UTF-8-файлах в основном является привычкой Microsoft (примечание: Microsoft также называет UTF-16 с BOM «Unicode», не уточняя порядок байтов).
BOM (byte order mark, метка порядка байтов) предназначен для UTF-16 и UTF-32 и обозначает порядок байтов (byte order). Microsoft использует BOM в UTF-8, чтобы явно отличать UTF-8 от ASCII и других кодировок, но такие файлы могут вызывать проблемы в операционных системах, отличных от Windows. Дополнительные сведения см. в статье Wikipedia — Byte order mark。