Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CudaLister (просмотр исходников)
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
LonerD



Joined: 04 Jan 2011
Posts: 1047
Location: Донецк

Post (Separately) Posted: Fri Aug 17, 2018 23:16    Post subject: Reply with quote

Skif_off wrote:
LonerD
UTF-16 LE без BOM? А зачем так делать?

Не знаю. Попались такие файлы скриптов в разных источниках, значит их существование возможно.
_________________
Total Commander DreamLair - мечтать всегда, мыслить тотально, быть командиром жизни
Win10 x64 HE SL Eng | TC DreamLair v2020 eternal pre-α (9.21a x32+x64) | AkelPad Lair v2020α (4.9.9 x86) | Cent Browser Lair
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1107

Post (Separately) Posted: Fri Aug 17, 2018 23:53    Post subject: Reply with quote

Строго говоря, не "возможно", а "допустимо" и даже не "обязательно", но анализ BOM - самый ходовой вариант автодетекта кодировки юникода и вроде с него обычно начинают автодетект вообще.

Смутно припоминаю, что где-то в потрохах WinXP попадаются то ли конфиги, то ли логи в UTF-16 LE без BOM.
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4908

Post (Separately) Posted: Sat Aug 18, 2018 00:52    Post subject: Reply with quote

Loner,
мне нужно описание алго, словами хотя бы, который детектит такой utf16.
Например:

- читаем первые 20 words, смотрим что нечетные байты 0, а другие не 0.
- еще смотрим то же про utf16 LE.
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1107

Post (Separately) Posted: Sat Aug 18, 2018 03:18    Post subject: Reply with quote

Alextp
Добрался до компа и проверил AkelPad (UTF-16 LE узнал в Jota+, т.к. уже видел подобное): определяет правильно. Детект кодировки в Edit.c, если правильно понял - после анализа BOM и до проверки UTF-8 без BOM/не юникод.
Только не понял, что будет в случае суррогатных пар.

Добавлено спустя 3 минуты:

Забыл, по умолчанию размер буфера для распознавания 1024 байт.
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4908

Post (Separately) Posted: Sat Aug 18, 2018 11:58    Post subject: Reply with quote

Приделал _простой_ детект 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
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1107

Post (Separately) Posted: Sat Aug 18, 2018 13:03    Post subject: Reply with quote

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
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4908

Post (Separately) Posted: Sat Aug 18, 2018 13:17    Post subject: Reply with quote

Skif_off wrote:
Весь файл анализируется?

Первые 20 байт - наверно достаточно.
Про Акел - просто почитай код по ссылке Edit.c.
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1107

Post (Separately) Posted: Sat Aug 18, 2018 22:06    Post subject: Reply with quote

Alextp
Если есть символы из ASCII, то для определения порядка байтов, наверное, должно быть достаточно. Но имел в виду вообще для неюникода или UTF-8 без BOM, для всяких cp125x, oem и т.п.
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4908

Post (Separately) Posted: Sun Aug 19, 2018 23:53    Post subject: Reply with quote

Я уже не понял что ты имел в виду...
Короче выше написал мой коммент к Edit.c.
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1107

Post (Separately) Posted: Mon Aug 20, 2018 16:42    Post subject: Reply with quote

Alextp
Имел в виду, как CudaText/CudaLister определяют кодировки - анализируя весь файл или только часть?
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4908

Post (Separately) Posted: Mon Aug 20, 2018 18:32    Post subject: Reply with quote

Только часть. Для UTF8 no bom это Н кбайт, для UTF16 no bom -10-20 б.
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4908

Post (Separately) Posted: Wed Oct 24, 2018 22:16    Post subject: Reply with quote

Кто то может подтвердить этот баг?
я у себя не повторил, тестил в Wine.
https://github.com/Alexey-T/CudaLister/issues/37
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5899
Location: Москва

Post (Separately) Posted: Thu Nov 01, 2018 02:42    Post subject: Reply with quote

У меня воспроизводится. Win7 x64, TC 9.21a x64, CudaLister 1.5.6, режим read-only без курсора.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Page 10 of 10

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group