Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| linux:utf8 [29-02-2012 08:40] – edmc73 | linux:utf8 [03-05-2016 12:16] (Version actuelle) – [Fichier hybride] edmc73 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== UTF8 ====== | ====== UTF8 ====== | ||
| + | |||
| + | Si vous avez décidé de passer votre serveur en UTF8, la plupart des fichiers textes/html etc.. contenant des accents deviendront difficilement lisible. | ||
| + | |||
| + | Dans mon cas d'un serveur web, je devais réencoder tous les fichiers du site. | ||
| + | |||
| + | Pour cette manip, mon choix s'est tourné sur la commande **recode** mais étant données que j' | ||
| + | |||
| + | J' | ||
| + | |||
| ===== Configuration ===== | ===== Configuration ===== | ||
| Ligne 19: | Ligne 28: | ||
| ===== Convertir avec iconv ===== | ===== Convertir avec iconv ===== | ||
| + | **iconv** permet de convertir un fichier et renvoie le résultat sur la sortie standard ce qui n'est pas forcément pratique pour réencoder plusieurs fichiers d'un site web par exemple. | ||
| iconv -f iso-8859-1 -t utf-8 ancienFichier > nouveauFichier | iconv -f iso-8859-1 -t utf-8 ancienFichier > nouveauFichier | ||
| iconv -f utf-8 -t iso-8859-1 ancienFichier > nouveauFichier | iconv -f utf-8 -t iso-8859-1 ancienFichier > nouveauFichier | ||
| | | ||
| + | ===== Convertir avec recode ===== | ||
| + | **recode** réencode le fichier qu'on lui soumet. | ||
| + | |||
| + | # file -i plan.php | ||
| + | plan.php: text/html; charset=iso-8859-1 | ||
| + | # recode iso-8859-1..utf-8 plan.php | ||
| + | # file -i plan.php | ||
| + | plan.php: text/html; charset=utf-8 | ||
| + | |||
| + | On peut réencoder plusieurs fichiers d'un coup. | ||
| + | # recode iso-8859-1..utf-8 * | ||
| + | | ||
| + | <note warning> | ||
| ===== Convertir avec vim ===== | ===== Convertir avec vim ===== | ||
| Ligne 51: | Ligne 74: | ||
| |euc-kr |coréen (Unix uniquement)| | |euc-kr |coréen (Unix uniquement)| | ||
| |cp936 |chinois simplifié (Windows uniquement)| | |cp936 |chinois simplifié (Windows uniquement)| | ||
| - | |euc-cn |chinois simplifié (Unix uniquement)| | + | |euc-cn |chinois simplifié (Unix uniquement)|U+2018 (Left Single Quotation Mark) |
| |cp950 |chinois classique (sur Unix, alias pour big5)| | |cp950 |chinois classique (sur Unix, alias pour big5)| | ||
| |big5 |chinois classique (sur Windows, alias pour cp950)| | |big5 |chinois classique (sur Windows, alias pour cp950)| | ||
| Ligne 65: | Ligne 88: | ||
| |ucs-4le |comme ucs-4, en petit boutiste| | |ucs-4le |comme ucs-4, en petit boutiste| | ||
| + | ===== Script pour réencoder les fichiers d'un site web ===== | ||
| + | Ce script permet d' | ||
| + | Modifiez les variables **chemin** et **extension** suivant ce que vous voulez faire.\\ | ||
| + | Rendez exécutable le script avec **chmod +x encode_utf8.bash**\\ | ||
| + | Puis lancez le **./ | ||
| + | |||
| + | Le script va analyser tous les fichiers du répertoire et des sous répertoire que vous avez spécifié.\\ | ||
| + | Si l' | ||
| + | Si l' | ||
| + | Si l' | ||
| + | |||
| + | D' | ||
| + | |||
| + | <file bash encode_utf8.bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | # Renseigner le répertoire à traiter | ||
| + | chemin="/ | ||
| + | extension=" | ||
| + | |||
| + | atraiter=`/ | ||
| + | |||
| + | for i in $atraiter | ||
| + | do | ||
| + | enc=`file --mime-encoding $i | awk '{ print $2 }'` | ||
| + | if [ $enc = " | ||
| + | recode $enc..utf-8 $i | ||
| + | echo -e "$i \\033[1;32m Conversion effectuée \\033[0; | ||
| + | elif [ $enc = " | ||
| + | echo -e "$i \\033[1;36m Déjà en utf8 \\033[0; | ||
| + | else | ||
| + | echo -e " | ||
| + | PS3="> | ||
| + | LISTE=(" | ||
| + | select CHOIX in " | ||
| + | case $REPLY in | ||
| + | 1|o) | ||
| + | recode $enc..utf-8 $i | ||
| + | echo -e " | ||
| + | break | ||
| + | ;; | ||
| + | 2|n) | ||
| + | echo Aucun réencodage de fait. | ||
| + | break | ||
| + | ;; | ||
| + | esac | ||
| + | done | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | echo | ||
| + | </ | ||
| + | |||
| + | ===== Mysql ===== | ||
| + | |||
| + | Soit vous réencodé toute la base comme détaillé sur ce site http:// | ||
| + | |||
| + | Soit vous faite la méthode comme moi qui consite à rajouter la ligne | ||
| + | mysql_query(" | ||
| + | Dans votre fichier de connexion à la base. | ||
| + | |||
| + | ===== Réencoder des noms de fichiers avec des caractères bizarre ===== | ||
| + | L' | ||
| + | |||
| + | Le plus simple, mettez dans un répertoire tous les avec des caractères bizarre et lancez la commande | ||
| + | detox * | ||
| + | Le nom de vos fichiers sera lisible ;) | ||
| + | |||
| + | Plein d' | ||
| + | |||
| + | ===== Caractères problématiques ===== | ||
| + | |||
| + | Certains caractères issue de traitement de texte ou de système d' | ||
| + | |||
| + | Bref, il faut alors faire des rechercher/ | ||
| + | |||
| + | Caractères spéciaux courant à rechercher | ||
| + | |||
| + | * U+2018 (Left Single Quotation Mark) | ||
| + | < | ||
| + | |||
| + | * U+201C (left double quotation mark) | ||
| + | < | ||
| + | |||
| + | * U+201D (right double quotation mark) | ||
| + | < | ||
| + | |||
| + | * U+AB (left double angle quotes) | ||
| + | < | ||
| + | |||
| + | * U+BB (right double angle quotes) | ||
| + | < | ||
| + | |||
| + | * U+2026 (horizontal ellipsis) 0xe280a6 | ||
| + | < | ||
| + | |||
| + | |||
| + | On peut aussi afficher le caractère dans postgresql avec la requête | ||
| + | select convert_from(' | ||
| + | si vous avez une vieille version | ||
| + | select convert_from(E' | ||