Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
kódování_znaků [2012/07/26 18:28]
Ubuntu
kódování_znaků [2019/02/25 18:21] (aktuální)
Řádek 1: Řádek 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}}