|
Тема
|
Unicode
|
|
Автор |
Phill (Регистриран) |
Публикувано | 15.08.03 09:48 |
|
Здравейте,
Знаете ли как се разбира начина на кодиране на текстови файлове. Дали са уникод, или пък са с някакъв charset различен от стандартния. Някакви уин-апи функции или има сигнатури в самия файл.
Имам тука един сорс на делфи дето го прави това, но го прави абсолютно самостоятелно, без да ползва някакви специални функции.
Благодаря ви предварително.
| |
|
Здрасти
Мисля, че UNICODE текстовите файлове започват с FF FE (шестнайсетично). И по това се различават от останалите текстови файлове
Ама не съм 100% сигурен.
Бии, за да те уважават!
| |
Тема
|
Re: Unicode
[re: Phill]
|
|
Автор |
Плaмeн (ентусиаст) |
Публикувано | 15.08.03 18:16 |
|
ако е наистина текстов файл, а не специфичен стандартен или частен формат, няма никакви указания за кодировката.
ако сканираш файла за който знаеш, че е текстов и намериш в него байт със стойност 0, това СЪС СИГУРНОСТ Е unicode, но ако не намериш, не значи, че не е, въпреки че е малко вероятно, да няма вътре поне интервал или нов ред :)
П.П. наистина notepad и други текстови редактори слагат в началото FF FE, но това не е гаранция, да не говорим, че съгласно Windows1251 (кирилица) това не е невалидна комбинация, въпреки че е малко вероятно да я има в началото на файла, освен ако не си писал азбуката в обратен ред.
Редактирано от Плaмeн на 15.08.03 18:21.
| |
|
FEFF (FFFE za little endian) e signaturata za UTF16. EFBBBF e za UTF8. i dwete pokazwat unicode. Win1251 ne e unicode (w smisyl - toj e samo izwadka ot unicode) i nqma na4in da razbere6 4e fajl e w win1251 codding, za html izri4no se ukazwa. ami towa e ob6to wzeto - ako e ascii fajla nqma na4in da razbere6 kakwo e kodiraneto, pri unicode nqma kodirane w smisyl na codepage - pri utf8 wseki simwol e direktno adresiran i po towa kosweno move6 da razbere6 za kakyw ezik stawa wypros. za towa da viwee unicode ;) - edinstwenoto neudobstwo e 4e trqbwa da se parswa :)
| |
Тема
|
Re: Unicode
[re: drone]
|
|
Автор |
ess (...и бира чадо!) |
Публикувано | 18.08.03 14:04 |
|
Грубо казано Unicode е стандарт за описване на символи - в смисъл на даден символ от някой език (жив или мъртъв) е присвоено число.
А UTF8, UTF16, UTF32, Win1251 за начини за кодиране на това съответствие в съответният брой байтове за символ. В общия случай UTF16 съответства 1:1 с Unicode, но вече има и UTF32 (т.е. символа е кодиран с 4 байта), защото Unicode отдавна мина границата от 2 байтовия range.
Така, че UTF8 си е кодиране. И не виждам защо човек трябва да се тормози с парсване, като всяка среда (Windows, Linux пр.) си има съответните системни функции.
Вярно е, че за да разпознаеш дали даден текст е UTF8 или UTF16 напр., е нужна доста евристика (ако сигнатурата липсва или не и вярваш)....
---
Не е важно да си добър, важното е да си ман-и-як!
| |
Тема
|
Re: Unicode
[re: ess]
|
|
Автор |
drone () |
Публикувано | 18.08.03 15:02 |
|
e ne e to4no taka... utf8 ne e ednobajtow - mislq 4e be6e ot 1 do 4 bytes (ili be6e do 5!?!?) utf16 e poorqzan, no predimstwoto mu e, 4e fixnat na dwa bajta. ewristika nqma nikakwa, no pri utf8 si trqbwa parswane (wqrno, 4e si ima libowe za celta). win1251 ne e unicode. wyob6te s tiq kodowi tablici e golqma ludnica - wseki si ima swoj - IBM, MS, MAC, ISO, abe ludnica ;) a unicode si e unicode, nadqwam se skoro we4e wsi4ko da e unicode
| |
Тема
|
Re: Unicode
[re: drone]
|
|
Автор |
ess (...и бира чадо!) |
Публикувано | 18.08.03 17:20 |
|
Да, UTF8 не е еднобайтово кодиране, така е. А за евристиката не си прав.
Извадка от Win32 API help-a:
IsTextUnicode
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. When the function returns, the results of such tests are reported via lpi.
BOOL IsTextUnicode(
CONST VOID* pBuffer, // input buffer to be examined
int cb, // size of input buffer
LPINT lpi // options
);
И още нещо: то и сега всичко може да си правиш Unicode, ама за връзка с външният свят ти трябват всичките тия UTFxx, Win1251 и прочие...
---
Не е важно да си добър, важното е да си ман-и-як!
| |
Тема
|
Re: Unicode
[re: ess]
|
|
Автор |
Phill (Регистриран) |
Публикувано | 18.08.03 21:06 |
|
Здравейте,
Вече си оправих нещата, попрочетох тва онова, разгледах и някой друг сорс. Прави сте за всичко.
Благодаря!
и- Unicode рулзз
| |
|
|
|
|