kódování_znaků

Rozdíly

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

Odkaz na výstup diff

Následující verze
Předchozí verze
kódování_znaků [2012/07/24 21:28] – vytvořeno ubuntukódování_znaků [2019/02/25 18:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řá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}}
  • Poslední úprava: 2019/02/25 18:21
  • autor: 127.0.0.1