Odpověď na názor

Odpovídáte na názor ke článku Čeština? Jdi mi k šípku!.

  • 13. 5. 2008 18:30

    Lael Ophir (neregistrovaný)

    [56] Samozřejmě se mýlíte. I poměrně tupý filtr more musí umět zalamovat na danou šíři, což bude těžko dělat bez znalosti UTF-8. O GUI apikacích nemluvě. Úpravy prostě jsou třeba. To, že program zřejmě nespadne, je sice pěkné, ale většině lidí to nestačí (stejně jako jim třeba nestačí, že program kompiluje).

    Qt to tak samozřejmě dělá. Podívejte se na QDir::entryList(), vrací QStringList (tedy list stringů). Jsou to samozřejmě QStringy, tedy UTF-16. Jinými slovy na Linuxu to propadne na glibc, nějaký opendir(), poté asi readdir(), budeme parsovat, a výsledky strkat do QStringListu, samozřejmě s převodem z aktuální code page na UTF-16 (a budeme se modlit, aby název na disku opravdu byl v code page, ve které aplikace jede, jinak konverzi zmršíme). No a když budeme otevírat soubor, konstruktoru QFile předáte QString. Jak byste to chtěl řešit vy? Mít platformně závislý datový typ, do kterého ukládáte názvy souborů (na unixech 8-bit string, na Windows UTF-16 string, na jiných platformách jiný), a zavádět do Qt takovou příšernost? Asi ne.

    [59] Jak je psáno výše, command line utility po přepnutí do UTF-8 vyžadují úpravy, a GUI aplikace je vyžadují ještě daleko drsněji. Podpora ANSI API je ve Windows z důvodu zpětné kompatibility. A připadne mi to daleko lepší, než před a po každém volání překládat všechny stringy do/z UTF-8 - podotýkám i u nových aplikací, a to zřejmě až do totálního vymření unixů.

    [54] Konzole samozřejmě používala a používá Unicode, od první verze NT. Jinou věcí je font, který konzole používá (v některých verzích Windows uměl právě tak jednu code page). Nepleťte si Win32 konzoli a MS-DOS. Aplikace pro DOS používaly OEM code page, což je pro češtinu CP 852. Jejich volání se opět překládala (minulý čas je snad na místě) do Unicode. Názvů souborů se to ale netýkalo, protože 8.3 názvy si s češtinou moc nerozuměly.

    Plain textové soubory chápaly aplikace pro DOS pochopitelně v OEM code page, tedy pro čšetinu CP852. Ne-Unicode aplikace pak pro češtinu ANSI 1250, s tím že zpravidla uměly v menu File/Open manuálně vybrat kódovou stránku ANSI/OEM. Unicode aplikace používaly při ukládání plain textu BOM, aby při otevírání bylo jasné, že jde o Unicode soubor. Vše přesně dle pravidel zpětné kompatibility: ANSI aplikace otevře text v OEM CP, Unicode aplikace otevře text v ANSI a OEM CP. Dopředná kompatibilita (aby třeba aplikace pro DOS otevíraly Unicode soubory) nebyla nikdy cílem.