Špatné zobrazení diakritiky na serveru

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #15 kdy: 21. 12. 2012, 14:18:39 »
Tak este raz sa pytam je mozne cp1250 prekonvertovat do utf-8. Neriesme to ako sa to tam dostalo...ale zaujima ma ako to prekonvertovat, nech to je vsetko utf-8....
Je to vlastne mozne? Dakujem
Píšu to nějak nesrozumitelně, nebo v čem je problém? Ptáš se mě, jestli jde název souboru změnit z "str[0x86]skrz" na "str[0x87]skrz"? Ano, to jde - říká se tomu přejmenování souboru.


Pavel 'TIGER' Růžička

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #16 kdy: 21. 12. 2012, 14:24:00 »
Já jsem přehlédl ten screen ... tady jedině ten convmv ... ale to jsi psal, že nepomáhá.

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #17 kdy: 21. 12. 2012, 14:28:35 »
Já jsem přehlédl ten screen ... tady jedině ten convmv ... ale to jsi psal, že nepomáhá.
Jestli convmv mrší názvy souborů, tak mu byly předány špatné parametry (na disku je jiné kódování než jaké jsem mu zadal jako výchozí, popř. OS používá jiné kódování než jaké jsem mu zadal jako cílové).

...a to jsme právě u toho, že je potřeba vědět, jakým způsobem tam byly ty názvy vytvořeny. Ale to rado nechce řešit, tak to asi bude každá rada drahá :)

Pavel 'TIGER' Růžička

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #18 kdy: 21. 12. 2012, 14:35:47 »
Mirku, teď teoretická otázka ... když si označí jeden ten otazník a nechá ho přejmenovat na správné písmeno, přejmenuje tím všechny otazníky, nebo jen ten správný? Myslel jsem třeba na Gwenrename ... to asi nevyjde, viď?

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #19 kdy: 21. 12. 2012, 14:44:33 »
Mirku, teď teoretická otázka ... když si označí jeden ten otazník a nechá ho přejmenovat na správné písmeno, přejmenuje tím všechny otazníky, nebo jen ten správný? Myslel jsem třeba na Gwenrename ... to asi nevyjde, viď?
Gwenrename neznám. Ale s otazníky bych moc nepracoval - jako otazník se obvykle zobrazuje něco, co program neví, jak zobrazit. Takže jako (stejný) otazník se můžou zobrazovat různé odlišné znaky.

Já bych to udělal tak, že bych se prvně snažil zjistit, v jakém kódování ty názvy jsou. Pokud by se mi to nepodařilo, použil bych pro convmv nějaké nejbližší kódování - třeba to cp1250. A těch pár znaků, které by byly zmršené, bych napravil ručně napsaným skriptíkem, třeba v Pythonu. Je to prasárna, ale co, jinak to dost dobře nejde, pokud mám něco kódované neznámým způsobem.

Ještě by možná stálo za to zkusit kódování CP852 a iso-latin-2, ty se občas někde taky z různých důvodů můžou objevit.


Pavel 'TIGER' Růžička

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #20 kdy: 21. 12. 2012, 15:08:21 »
Přesně to jsem si myslel. Pravdou je, že chyba vznikla při zapisování. Proto to teď oba systémy vidí špatně. Ale nabízí se otázka, mám disk připojenej v UTF-8, ukládám na něj CP1250 bez konverze do UTF-8, jako co to uloží? Podle mne jako CP1250, ale jelikož je disk připojenej jako UTF-8 tak to potom i Windows čtou jako UTF-8, proto špatné znaky. A linux má nastavené UTF-8 a je to uložené v CP1250, proto špatné znaky. Potom je ale nelogické, že by convmv nezabral u dvou znaků. Někde je asi chyba :-D

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #21 kdy: 21. 12. 2012, 15:13:27 »
Přesně to jsem si myslel. Pravdou je, že chyba vznikla při zapisování. Proto to teď oba systémy vidí špatně. Ale nabízí se otázka, mám disk připojenej v UTF-8, ukládám na něj CP1250 bez konverze do UTF-8, jako co to uloží? Podle mne jako CP1250, ale jelikož je disk připojenej jako UTF-8 tak to potom i Windows čtou jako UTF-8, proto špatné znaky. A linux má nastavené UTF-8 a je to uložené v CP1250, proto špatné znaky. Potom je ale nelogické, že by convmv nezabral u dvou znaků. Někde je asi chyba :-D
pavel presne ako pisete....

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #22 kdy: 21. 12. 2012, 15:17:50 »
V konzole pise znaky dobre, nie je to sposobene chybou v locale, je to prense ako pise pavel...linuxy su defaultne samizda v utf-8, windowsy cp-1250, ked sa to kopiruje tak sa to nejako poskodia locale, alebo len system nepozna cp-1250...problem je, ze ked chcem v linuxe dany subor so zlym nazvom kopirovat - nejde, takze nemam ani ako overit ci ho otvori spravne vo windowse ako cp1250. Ako zistit aky to je typ kodovania?

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #23 kdy: 21. 12. 2012, 15:27:29 »
skusil som convmv so vstupny cp852 a funguje... je mozne nejako automaticky detegovat typ kodovania nasledne kovertovat?

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #24 kdy: 21. 12. 2012, 15:52:42 »
Proto to teď oba systémy vidí špatně.
To těžko - ten, který to zapsal, by to viděl správně.

Ale nabízí se otázka, mám disk připojenej v UTF-8, ukládám na něj CP1250 bez konverze do UTF-8, jako co to uloží?
No to je právě to, o čem jsem psal - a zjevně nesrozumitelně, nebo nevím :)

Nemáš "disk připojenej v UTF-8". Jenom máš soubory na disku zapsané v kódování UTF-8.

ukládám na něj CP1250 bez konverze do UTF-8, jako co to uloží?
Můžeš si to vyzkoušet třeba pomocí toho Pythonu. Řetězec "čert" se v CP1250 zakóduje jako E8 65 72 74, zatímco v Unicode jako C4 8D 65 72 74:

Kód: [Vybrat]

>>> for b in bytearray(u"čert","utf8"): print "%X"%b
C4
8D
65
72
74
>>> for b in bytearray(u"čert","cp1250"): print "%X"%b
E8
65
72
74

Takže pokud na disk zapíšeš soubor s názvem E8 65 72 74 a budeš se ho snažit dekódovat jako řetězec v Unicode, vyjde ti v tomhle případě (kurnik, příklad jsem zvolil blbě! ;) neplatný utf-8 řetězec, který se nejspíš zobrazí jenom jako "ert" nebo "?ert":
Kód: [Vybrat]
>>> bytearray([0xe8,0x65,0x72,0x74]).decode("utf-8")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe8 in position 0: invalid continuation byte

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #25 kdy: 21. 12. 2012, 15:55:22 »
Jenom máš soubory na disku zapsané v kódování UTF-8.
Přesněji *názvy souborů* zapsané atd.

Pavel 'TIGER' Růžička

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #26 kdy: 21. 12. 2012, 16:12:05 »
Prostě codepage je UTF-8 ;-) však si rozumíme.

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #27 kdy: 21. 12. 2012, 16:16:49 »
Prostě codepage je UTF-8 ;-) však si rozumíme.
No ale to se týká jenom zobrazování (a řazení apod.) Netýká se to zapisování na disk. Klidně můžeš mít deset adresářů, v jednom mít soubory s názvy v UTF-8 kódování, v jiném s iso-8859-2 kódováním, ve třetím ...atd... Akorát teda jenom jeden adresář se ti bude zobrazovat tzv. "správně" - a bude to právě ten, který má názvy souborů kódovány tak, jak máš aktuálně nastavené zobrazování (locales). Takže můžeš klidně přepínat mezi deseti různými locales a postupně budeš vidět "správně" soubory v jednom z těch deseti adresářů.

Pavel 'TIGER' Růžička

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #28 kdy: 21. 12. 2012, 16:17:05 »
skusil som convmv so vstupny cp852 a funguje... je mozne nejako automaticky detegovat typ kodovania nasledne kovertovat?

Ty máš vlastně na tom disku soubory i ve správném kódování ... hele, tohle bych raději rozdělil ručně. Přijde mi to jako nejbezpečnější.

Pavel 'TIGER' Růžička

Re:Zle zobrazenie ceskych a slovenskych znakov na serveri(samba, ssh...)
« Odpověď #29 kdy: 21. 12. 2012, 16:22:49 »
Prostě codepage je UTF-8 ;-) však si rozumíme.
No ale to se týká jenom zobrazování (a řazení apod.) Netýká se to zapisování na disk. Klidně můžeš mít deset adresářů, v jednom mít soubory s názvy v UTF-8 kódování, v jiném s iso-8859-2 kódováním, ve třetím ...atd... Akorát teda jenom jeden adresář se ti bude zobrazovat tzv. "správně" - a bude to právě ten, který má názvy souborů kódovány tak, jak máš aktuálně nastavené zobrazování (locales). Takže můžeš klidně přepínat mezi deseti různými locales a postupně budeš vidět "správně" soubory v jednom z těch deseti adresářů.

A to je přesně jeho současný stav. Má tam "správné" soubory v UTF-8 a "nesprávné" v cp852 na jednom disku a chtěl by zautomatizovat převod. Já mu poradil ruční oddělení na "správné" a "nesprávné". Přijde mi to jako nejbezpečnější. Ale určitě to lze nějakým scriptem zautomatizovat, leč bez zálohy bych to raději nezkoušel, aby nepokazil i ty "správné".