Erazer

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору пасип за наводящий вопрос... дело в том что во всем интернете почему-то utf-8 противопостявляется слову unicode.. вот и я по привычке туда же - "все побежали и я побежал" хотя на самом деле : "Способы представления Юникод имеет несколько форм представления (англ. Unicode Transformation Format, UTF): UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE)" так вот... у меня проблема в том как определить что передо мной UTF-8 или UTF-16 (UTF-16BE, UTF-16LE)... "Для определения формата представления Юникода в текстовом файле используется приём, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. Byte Order Mark, BOM). Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов: UTF-8 EF BB BF UTF-16BE FE FF UTF-16LE FF FE UTF-32BE 00 00 FE FF UTF-32LE FF FE 00 00 К сожалению, этот способ не позволяет надёжно различать UTF-16LE и UTF-32LE, поскольку символ U+0000 допускается Юникодом (хотя реальные тексты редко начинаются с него)." эмпирическим путем я пришел к тому что так называемые unicode строки (ну так в программме их создающей написано ) начинаются с "FF FE" а UTF-8 -строки такого заголовка не имеют, и в принципе можно отличать их по этому признаку... но знаете лень как-то делать то что возможно кем-то уже реализовано Или все же еще никем ?  |