View previous topic :: View next topic |
Author |
Message |
LonerD
Joined: 04 Jan 2011 Posts: 1169 Location: Макеевка
|
(Separately) Posted: Fri Aug 17, 2018 23:16 Post subject: |
|
|
Skif_off wrote: | LonerD
UTF-16 LE без BOM? А зачем так делать? |
Не знаю. Попались такие файлы скриптов в разных источниках, значит их существование возможно. _________________ Windows 11 | TC DreamLair eternal pre-α |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Fri Aug 17, 2018 23:53 Post subject: |
|
|
Строго говоря, не "возможно", а "допустимо" и даже не "обязательно", но анализ BOM - самый ходовой вариант автодетекта кодировки юникода и вроде с него обычно начинают автодетект вообще.
Смутно припоминаю, что где-то в потрохах WinXP попадаются то ли конфиги, то ли логи в UTF-16 LE без BOM. |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sat Aug 18, 2018 00:52 Post subject: |
|
|
Loner,
мне нужно описание алго, словами хотя бы, который детектит такой utf16.
Например:
- читаем первые 20 words, смотрим что нечетные байты 0, а другие не 0.
- еще смотрим то же про utf16 LE. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Sat Aug 18, 2018 03:18 Post subject: |
|
|
Alextp
Добрался до компа и проверил AkelPad (UTF-16 LE узнал в Jota+, т.к. уже видел подобное): определяет правильно. Детект кодировки в Edit.c, если правильно понял - после анализа BOM и до проверки UTF-8 без BOM/не юникод.
Только не понял, что будет в случае суррогатных пар.
Добавлено спустя 3 минуты:
Забыл, по умолчанию размер буфера для распознавания 1024 байт. |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sat Aug 18, 2018 11:58 Post subject: |
|
|
Приделал _простой_ детект utf16 по первым 10 байтам- четные 0 а нечетные ascii. Для BE наоборот.
CudaText: https://sourceforge.net/projects/cudatext/files/beta_version/
Не уверен что надо опцию "размер буфера".
Добавлено спустя 11 минут:
Про Akel:
- он детектит ascii code по ренджу 1..126, хотя надо бы по (9,10,13,32..126)
- он детектит UTF16 по частоте LE chars, BE chars.
Если частота LE > частоты BE и больше порога- детект LE.
Это криво. Т.к. хотя бы 2 символа BE уже должны говорить что "это не LE"... _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Sat Aug 18, 2018 13:03 Post subject: |
|
|
Alextp wrote: | Не уверен что надо опцию "размер буфера". |
А сколько CudaText/CudaLister используют для детекта? В смысле, если BOM нет. Весь файл анализируется?
Alextp wrote: | - он детектит ascii code по ренджу 1..126, хотя надо бы по (9,10,13,32..126) |
Не сразу дошло, в смысле - только печатные? В этом же цикле бинарные детектятся, ограничивать диапазон не резонно. Но их ведь немного, и всё уже в ОЗУ?
Про LE/BE не понял, это ведь просто порядок байт и считается, что попадается чаще - \x00\xXX или \xXX\x00? |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sat Aug 18, 2018 13:17 Post subject: |
|
|
Skif_off wrote: | Весь файл анализируется? |
Первые 20 байт - наверно достаточно.
Про Акел - просто почитай код по ссылке Edit.c. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Sat Aug 18, 2018 22:06 Post subject: |
|
|
Alextp
Если есть символы из ASCII, то для определения порядка байтов, наверное, должно быть достаточно. Но имел в виду вообще для неюникода или UTF-8 без BOM, для всяких cp125x, oem и т.п. |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Mon Aug 20, 2018 16:42 Post subject: |
|
|
Alextp
Имел в виду, как CudaText/CudaLister определяют кодировки - анализируя весь файл или только часть? |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Thu Nov 01, 2018 02:42 Post subject: |
|
|
У меня воспроизводится. Win7 x64, TC 9.21a x64, CudaLister 1.5.6, режим read-only без курсора. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
bob2000
Joined: 15 Jun 2017 Posts: 5
|
(Separately) Posted: Fri Jan 25, 2019 21:15 Post subject: |
|
|
Что нужно сделать, чтобы CudaLister не "перехватывал фокус"
То есть после его включения, другие плагины по клавише "4" уже не подключаются
Заметил, что перехватывает фокус только на файлах без "лексеров" |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
|
|