Obě strany předchozí revize Předchozí verze | |
kódování_znaků [2012/07/26 16:28] – ubuntu | kódování_znaků [2019/02/25 17:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 |
---|
| ====== Kódování znaků ====== |
| |
| {{.:document.png}} Při práci v Ubuntu se můžete setkat s problémem **kódování českých znaků**, kdy se místo určitých znaků zobrazují znaky naprosto nesmyslné, tzv. **syndrom "rozsypaného čaje"**. Problém se může týkat textových souborů, titulků ve filmu, internetových stránek nebo zpráv v internetové komunikaci. V drtivé většině pocházejí tyto "problémové" soubory z operačního systému //MS Windows//, nebo jsou způsobeny jeho používáním. |
| |
| {{.:important.png}} Tento článek řeší problém se špatným zobrazením **obsahu** souborů. Pokud máte problém se zobrazením **názvu** souborů, poté máte špatně připojený diskový oddíl. Viz [[Připojení disku]]. |
| |
| Tento návod vám vysvětlí podstatu problému, a pomůže vám pozměnit textové soubory tak, aby zobrazovaly češtinu správně. |
| |
| {{.:video.png}} Pokud máte problémy se zobrazením titulků ve filmech, čtěte článek [[České titulky ve filmech]]. |
| |
| {{.:pidgin-logo.png}} Pokud máte problémy s internetovou komunikací (většinou ICQ) v programu Pidgin, čtěte článek [[Pidgin]]. |
| |
| {{.:IconGlobe.png}} Pokud máte problémy se zobrazením internetových stránek ve svém prohlížeči, jsou to lajdácky napsané stránky. Internetové stránky lze velice jednoduše napsat tak, že s jejich zobrazením nejsou problémy na žádném operačním systému. Kontaktujte jejich autora a upozorněte ho. Pokud HTML stránky přímo tvoříte a máte problém se zobrazením jejich //zdrojového kódu//, postupujte úplně stejným způsobem, jako je uveden níže (HTML stránky jsou obyčejné textové soubory). Nezapomeňte v hlavičce stránky specifikovat nové kódování. |
| |
| ====== Příčina problému ====== |
| Tento problém má historické důvody. V minulosti nebylo možné, aby všechny znaky světa byly obsaženy v jediné [[http://cs.wikipedia.org/wiki/Znakov%C3%A1_sada|znakové sadě]]. Proto si nemohl Japonec, Francouz a Čech poslat textový soubor s národními znaky, aby to u každého vypadalo stejně. Z tohoto důvodu vznikla znaková sada [[http://cs.wikipedia.org/wiki/Unicode|Unicode]] (a jeho zápis [[http://cs.wikipedia.org/wiki/UTF-8|UTF-8]]), která tyto hranice bourá, a uvedené možnosti poskytuje. **UTF-8** je moderní a perspektivní lék na všechny problémy s kódováním znaků, které kdy v minulosti byly, a proto jej i Ubuntu používá jako výchozí kódování znaků. Bohužel microsoftí systémy (včetně nejnovějších Windows Vista) pro ukládání textových souborů stále upřednostňují historické znakové sady se všemi jejich neřestmi - v ČR (a SR) je to sada **windows-1250**. Nezbývá tedy, než si povzdychnout nad přístupem Microsoftu a problém ručně vyřešit. |
| |
| {{.:info.png}} Pokud budete mít svoje soubory v kódování UTF-8, budou se vám správně zobrazovat pod Ubuntu i u většiny programů pod Windows. Pokud budete mít svoje soubory ve windows-1250, budou se vám zobrazovat správně jen pod českými Windows, nikde jinde. Kódování UTF-8 lze totiž v souboru většinou rozeznat, kódování windows-1250 nikoliv. |
| |
| ====== Řešení problému ====== |
| Ubuntu nám poskytuje množství nástrojů, které nám dovolí převést textové soubory z kódování Windows do univerzálního UTF-8. Lze použít jak grafický "klikací" způsob, tak využít příkazů v [[Terminál|Terminálu]], které umožňují převod mnoha takových souborů najednou. |
| |
| {{.:info.png}} Kódování UTF-8 se v programech většinou označuje ''utf8'' nebo ''UTF-8''. Kódování windows-1250 se většinou označuje ''windows-1250'', ''win-1250'' nebo ''cp1250''. |
| |
| ====== Oprava češtiny ====== |
| ===== Textovým editorem ===== |
| {{.:navigate.png}} Spusťte si **Aplikace → Příslušenství → Textový editor**. |
| |
| Zvolte //Soubor → Otevřít//. Rozviňte nabídku //Kódování znaků// a zvolte //Přidat nebo odstranit//. |
| |
| {{ .:gedit-encoding-1.png }} |
| |
| V pravé části tabulky si pomocí tlačítek //Přidat// a //Odstranit// ponechte často používané nestandardní kódování, nejčastěji vám stačí pouze ''Středoevropské WINDOWS-1250''. Stiskněte //OK//. |
| |
| {{ .:gedit-encoding-2.png }} |
| |
| Označte požadovaný soubor, a v nabídce //Kódování znaků// zvolte //Středoevropské (WINDOWS-1250)//. Poté //Otevřít//. |
| |
| {{ .:gedit-encoding-3.png }} |
| |
| Soubor by měl být nyní zobrazený správně v češtině. Zvolte //Soubor → Uložit jako//, jako název souboru ponechte výchozí název (přepíše se původní soubor), a v nabídce //Kódování znaků// vyberte //Aktuální locale (UTF-8)//. Pak //Uložit//. |
| |
| {{ .:gedit-encoding-4.png }} |
| |
| Soubor jste si nyní převedli z windows kódování do univerzálního kódování. Už byste s ním neměli mít nikde problémy. |
| |
| ===== Příkazem cstocs ===== |
| [[Přidávání zdrojů|Přidejte si]] zdroj //universe// a [[Instalace programů|nainstalujte si]] balík ''cstocs''. |
| |
| Otevřete si [[Terminál]] a přepněte se do adresáře s požadovaným souborem. Kódování souboru potom převedete příkazem: |
| <code> |
| cstocs -i 1250 utf8 soubor.txt |
| </code>stejně tak lze převést více souborů naráz |
| <code> |
| cstocs -i 1250 utf8 soubor1.txt soubor2.txt |
| </code>nebo třeba všechny textové soubory v aktuálním adresáři |
| <code> |
| cstocs -i 1250 utf8 *.txt |
| </code> |
| Dejte si pozor, ať daný příkaz nespustíte na daný soubor více než jednou. Pro jistotu mějte vždy uchovanou kopii stranou. |
| |
| ===== Příkazem recode ===== |
| //Recode// je ve standardních zdrojích Ubuntu, stačí tedy pouze [[Instalace programů|nainstalovat]] balík ''recode''. Dle mých zkušeností ale není tak spolehlivý jako příkaz ''cstocs''. |
| |
| Otevřete si [[Terminál]] a přepněte se do adresáře s požadovaným souborem. Kódování souboru potom převedete příkazem: |
| <code> |
| recode 1250..utf8 soubor.txt |
| </code>stejně tak lze převést více souborů naráz |
| <code> |
| recode 1250..utf8 soubor1.txt soubor2.txt |
| </code>nebo třeba všechny textové soubory v aktuálním adresáři |
| <code> |
| recode 1250..utf8 *.txt |
| </code> |
| Samozřejmě si vždy uchovejte kopii stranou, kdyby se při převodu něco nepovedlo. |
| |
| ===== Příkazem iconv ===== |
| |
| Otevřete si [[Terminál]] a přepněte se do adresáře s požadovaným souborem. Kódování souboru potom převedete příkazem: |
| <code> |
| iconv -f windows-1250 -t utf8 <soubor.txt >nový_soubor.txt |
| </code> |
| ===== Příkazem convmv ===== |
| Program najdete ve stejnojmenném balíku ''convmv''. |
| |
| Otevřete si [[Terminál]].\ |
| Převedení všech názvů souborů a adresářů uvnitř adresáře ''data'' v domovské složce z ISO-8859-2 do UTF-8: |
| <code> |
| convmv -f iso-8859-2 -t utf8 -r --notest --replace ~/data |
| </code> |
| Opravení diakritiky v souborech pojmenovaných „®esky“: |
| <code> |
| convmv -f latin2 -t utf8 nazev_souboru |
| </code> |
| Změna názvu všech souborů z kódování windows-1250 na UTF-8: |
| <code> |
| find . -type f -exec convmv -f cp1250 -t utf-8 {} --notest \; |
| </code> |
| |
| ===== Příkazem enca ===== |
| |
| Nainstalujte si program ''enca''. |
| Otevřete si [[Terminál]] a přepněte se do adresáře s požadovaným souborem. |
| |
| Detekce znakové sady |
| <code> |
| enca dopis.txt |
| </code> |
| Díky automatické detekci není nezbytně nutné uvádět výchozí znakovou sadu (detekce může ovšem selhat, nespoléhejte na ni!). |
| <code> |
| enca -x iso-8859-2 dopis.txt |
| </code> |
| Převod souboru do znakové sady, kterou máte na svém systému, provedete parametrem -c : |
| <code> |
| enca -c dopis.txt |
| </code> |
| |
| ====== Odkazy ====== |
| * [[http://www.linuxexpres.cz/praxe/kodovani-textu-na-pocitaci|Kódování textu na počítači]] |
| * [[http://www.linux.com/articles/58689|Convert file names to a different encoding with convmv]] {{.:en.png}} |
| * [[http://www.linux.com/feature/141378|Linux tools to convert file formats]] {{.:en.png}} |