Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хм. А как определить - Unicode, UTF-8 или ANSI? [D7, WinXP]


Задумавшийся ©   (2005-12-03 20:22:00) 

Здравствуйте. Есть файл (plain-text) FileName, как опеределить содержимое какого типа в нем находится - Unicode, UTF-8 или ANSI? Спасибо.


Задумавшийся   (2005-12-04 00:45:00) [1]

Сделал, работает, спасибо.


Задумавшийся   (2005-12-03 21:55:00) [2]

2 Anatoly Podgoretsky

Да, к тому моменту, когда писал пост, еще не особо осознавал :). Теперь понимаю, что "Юникод" в моем прошлом понимании на самом деле есть UTF-16.


Anatoly Podgoretsky   (2005-12-03 21:50:00) [3]

Задумавшийся   (03.12.05 20:52) [1]
Ты не путаешь Юникод и UTF


Задумавшийся   (2005-12-03 21:30:00) [4]

Спасибо, конечно, но оттуда же:

Requirements

 Windows NT/2000/XP/Vista: Included in Windows NT 3.5 and later.
  Windows 95/98/Me: Unsupported.


Критично...


> видимо, далеко не всегда используется, ибо:


Да, насколько я понял это т.н "сигнатура Unicode", где то вставляется, где то нет. Но как раз это не критично, 100% точность определения не требуется.


Piter   (2005-12-03 21:16:00) [5]

http://ah054.scut.ru/

Задумавшийся   (03.12.05 20:52) [1]
Для указания кодировки текста в Юникоде используется соглашение


видимо, далеко не всегда используется, ибо:

"The IsTextUnicode function determines whether a buffer is likely to contain a form of Unicode text. The function uses various statistical and deterministic methods to make its determination, under the control of flags passed via lpi"


Задумавшийся   (2005-12-03 20:52:00) [6]

Откопал интересный текст. Теперь проблема технического плана - как считать эти байти и определить?


Для указания кодировки текста в Юникоде используется соглашение, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. Byte Order Mark, BOM). Поскольку символа U+FFFE не существует, это позволяет определить кодировку текста. Документы, следующие этой конвенции начинаются с такой последовательности байтов:
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 является легальным символом (хотя реальные тексты редко начинаются с него).


Наверх

Титульная страница Поиск, карта сайта Написать письмо