http://www.linuxexpres.cz/praxe/kodovani-textu-na-pocitaci
Diakritika přes PHP
kódovánív hlavičce souboru
header('Content-type: text/html; charset=utf-8');
PHP převod kódování
/// převod cp1250 do UTF8 zatďż˝m udďż˝lanďż˝ jen z cp1250
function string2utf8($string) {
/// kontrola kodovani
$control = @iconv("UTF-8", "UTF-8//IGNORE", $string );
if (strlen($control)!=strlen($string)) {
$return=@iconv("WINDOWS-1250", "UTF-8", $string );
$return.="Prevod kodovani";
}
else $return=$control;
return $return;
}
/// p�evod cp1250 do UTF8 zat�m ud�lan� jen z cp1250
function string2win1250($string) {
/// kontrola kodovani
//$control = @iconv("WINDOWS-1250", "WINDOWS-1250//IGNORE", $string );
$return=@iconv("UTF-8", "WINDOWS-1250", $string );
/*
$inUTF1=mb_strlen($string, 'UTF-8');
$inWin1= mb_strlen($string, 'Windows-1251');
$testingString=@iconv("UTF-8", "WINDOWS-1250", $string );
$inUTF2=mb_strlen($string, 'UTF-8');
$inWin2= mb_strlen($string, 'Windows-1251');
echo "<hr />".$inWin1."!=".$inWin2."<hr />";
*/
/*
if (strlen($control)!=strlen($string)) {
echo "prevod";
$testingString=@iconv("UTF-8", "WINDOWS-1250", $string );
$return=$testingString;
//echo "PREVADIM";
}
else $return=$control;
*/
return $return;
}
Konvertujeme
iconv
Jeho manuálová stránka na debianních systémech sice za mnoho nestojí, ale přesto se jedná o velice užitečný nástroj. Použití je jednoduché:
iconv -f vstupni_kodovani -t vystupni_kodovani soubor[y]
Dekódovaný výsledek se posílá na standardní výstup. Argumentem -l si můžete zobrazit seznam různých kódování.
recode
Recodeje mnohem pokročilejší aplikace. Mimo jiné dokáže odstranit diakritiku ze souboru.
cat dopis.txt
%Žluťoučký kůň úpěl ďábelské ódy
recode utf-8..flat dopis.txt
%cat dopis.txt
Zlutoucky kun upel dabelske ody
Je nutné mít na paměti, že recode vždy mění obsah souboru, takže je dobré si dělat zálohy.
enca
Obsahujenavíc i detekci znakové sady, takže náš dopis bez diakritiky enca rozpozná.
enca dopis.txt
7bit ASCII characters
Díky automatické detekci není nezbytně nutné uvádět výchozí znakovou sadu.
enca -x iso-8859-2 dopis.txt
Převod souboru do znakové sady, kterou máte na svém systému, provedete parametrem -c :
enca -c dopis.txt
Tento nástroj vytvořil David Nečas, takže není divu, že obsahuje vazbu na
cstocs
Cožje konvertor specializovaný na češtinu a slovenštinu. Příkaz
enca -C extern -E cstocs -x ascii dopis.txt
Tedy opět odstraní diakritiku ze souboru. Ovšem má i mnoho užitečných funkcí, například dokáže nahradit © za (C) při převodu do ASCII. Převod z CP-1250 na UTF-8 se provede takto
cstocs cp1250 utf-8 < dopis.txt
convmv
Nejen obsah souborů, ale i jejich názvy bývá potřeba konvertovat. Následující příkaz vám opraví diakritiku v souborech pojmenovaných „®esky“.
convmv -f latin2 -t utf8 nazev_souboru
Provádíme hromadné změny
Převádětjeden soubor po druhém může být otrava. Nebyl by to Linux, pokud by nenabízel možnost automatického zpracování. Nejlepším způsobem je použít příkaz find
find . -iname '*.txt' -exec recode cp1250..utf8 {} \;
Tímto způsobem se převedou všechny textové soubory v aktuálním adresáři (a podadresářích) z kódování CP-1250 do UTF-8. Příkaz find je velmi flexibilní, takže
find . -type f -exec convmv -f cp1250 -t utf-8 {} --notest \;
Změní názvy všech souborů z kódování Windows na UTF-8.