Portál AbcLinuxu, 10. května 2025 08:16
file -bi <filename>Tak jsem si vytvořil ve windows php soubor v pspadu s kováním cp1250. Uložil jsem ho a zavolal tento příkaz. Odpověd je:
text/x-php; charset=unknown-8bit
To mě tedy moc neuspokojuje. Představovl bych si že odpověd bude cp1250. Proč to pspad dokáže a příkaz "file" nikoliv? A existuje nástroj který to dokáže? Díky za rady.
Řešení dotazu:
Už jsem odpověděl jak se to dělá - prostě to hádá podle toho jaké znaky se v souboru vyskytují.
Přesně tak to dělá, prohlíží prvních nevímkolik (zapomněl jsem) znaků a podle toho hádá.
Na začátek všech souborů psaných v pspadu vrážím poznámku obsahující žš
, abych mu to usnadnil. Vrazil bych tam i ť
, ale kombinace vok+pspad mi pak nabídne nějakou blbost s velkými písmeny.
To je tím, že asi není sw pro Linux, který umí zobrazit informaci ze sektoru na disku a třeba i upravit jedinej bit na něm.dd + blhexflip
Kodování se hádá podle slov z diakritikou zda dávají smysl a zda jsou tam platné znaky z nějakého kodování.zdroj?
$ cat /etc/motd Dobrý den, existuje spolehlivý nástroj v linuxu na zjištění v jakém kódování je soubor uložen? Co se týče zjištění našel jsem nejoblíbenější příkaz. $ enca -L czech /etc/motd Universal transformation format 8 bits; UTF-8
Taky nechápu lidi, kteří v době znakové sady Unicode, resp. v jejím nejčastěji používaném kódování UTF-8, stále ještě použivájí takovouto "prasečinu.
To už ani nemůže člověk napsat vlastní názor, aniž by byl nazván pitomcem?
$ echo "příšerně žluťoučký kůň úpěl ďábelské ódy" >text $ file -bi text text/plain; charset=utf-8 $ recode u8..1250 text $ file -bi text text/plain; charset=unknown-8bit $ recode 1250..l2 text $ file -bi text text/plain; charset=iso-8859-1 $ recode l2..UTF-16 text $ file -bi text text/plain; charset=utf-16beJak je vidět, příkaz
file
spolehlivě detekuje pouze Unicode. Dnes už vlastně ostatní kódování postrádají na významu.
Poslední dobou do PHP pro jistotu české texty vůbec nedávám. Pouze do šablon - tam je při vynechání deklarace automaticky předpokládáno UTF-8 či UTF-16 s automatickou detekcí. A protože UTF-8 používám nativně, vůbec to nemusím řešit.
cat cp1250file.txt | enca -L czech -g -c -x UTF-8prevede cesky text do UTF-8. nedavno jsem se prehraboval ve starych archivech pdb knizek a tohle mi pomohlo. zjevne to nemusi fungovat vzdycky. nektere soubory jsou dojebane totalne, napr. obsahuji vice ruznych kodovani, kdy je ruzni lide otevirali a ukladali jen casti a na zbytek kaslali. V tom pripade uz asi jedine rucne.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.