Vim, Putty, SSH et MySQL en UTF-8 et Affichage Idéogrammes Chinois

Créé : Vendredi 14 Octobre 2011 20:36:00
Mise à jour : Mardi 21 Février 2017 22:03:31

Vim ou vi en session Linux Debian Lenny est configuré en natif en caractères ISO-Latin1. Jusqu'à aujourd'hui, les OS unix en général et aussi les programmes de console tels que MsDos, MySQL client natif (mysql.exe) ne sont pas encore intrinsèquement en Unicode. Il n'est pas facile de visualiser les textes UTF-8 pour les fichiers multi-octet tels les écrits chinois.

Les webmasters gèrent leur serveur Linux debian à distance à travers une session SSH par PuTTY à partir du système Windows 7 par exemple.

Or il n'est pas nécessaire d'avoir un Windows Chinois pour afficher les idéogrammes, nous pouvons le faire sous Windows Occidental.

En vim dans la session SSH, afin de visualiser les fichiers encodés en charset=UTF-8, qu'il s'agit du texte Chinois Simplifié ou de l'Arabe, il faut configurer aux deux bouts: Linux et Windows Seven.

Côté Linux

Il faut installer les locales UTF8, les polices de caractères Chinois et modifier ~/.vmimrc.

  1. Générer les Locales UTF-8 dans Linux

    • Connectez-vous à votre serveur Linux en SSH par PuTTY avec le compte root ou via un autre compte administrateur.
    • Lancez la commande
      # dpkg-reconfigure locales
      .
    • Sélectionnez les locales qu'il vous faut pour vos langues multi-octet.
      Pour sélectionner, il faut taper la barre [ESPACE] dans la case. Dans mon cas pour le Chinois Simplifié, avec un peu de luxe, il me faut sélectionner:

      en_US ISO-8859-1
      zh_CN GB2312
      zh_CN.GBK GBK
      zh_CN.UTF-8 UTF-8

      Vous pouvez également valider l'option All locales. Là vous aurez toutes les locales disponibles, mais elles vont prendre quelques dizaines de Mo de disque dur chez votre hébergeur et cela prendra quelques minutes.
  2. Installer les Polices Chinoises UTF-8 dans Linux

    • Un fois les locales acquises dans votre OS Linux, il faut encore ajouter les polices de caractères UTF-8 dans votre serveur. Sur la toile parmi les polices chinoises gratuites disponibles pour les systèmes Unix il y a le lot arphic, un éditeur tawanais, nous avons besoin de ceux-ci:

      ttf-arphic-gbsn00lp (AR PL SungtiL GB)
      ttf-arphic-gkai00mp (AR PL KaitiM GB)
      ttf-arphic-bsmi00lp (AR PL Mingti2L Big5)
      ttf-arphic-bkai00mp (AR PL KaitiM Big5)

      Pour installer ces fontes, il faut lancer la commande
      # apt-get install ttf-arphic-bkai00mp ttf-arphic-bsmi00lp ttf-arphic-gbsn00lp ttf-arphic-gbsn00lp
      . Ce qui aboutira à des fichiers bkai00mp.ttf bsmi00lp.ttf gbsn00lp.ttf dans le répertoire /usr/share/fonts/truetype/arphic, elles sont suffisantes pour afficher les caractères chinois simplifiés.
  3. Modifer le fichier de configuration ~/.vimrc

    • Dans le fichier de configuration par utilisateur ~/.vimrc, ajouter les lignes suivantes:

      "...
      set fileencodings=utf-8,gb2312,gbk,gb18030
      set termencoding=utf-8
      set encoding=utf-8
      "...

      Tous les trois paramètres sont obligatoires pour afficher les idéogrammes chinois encodés UTF-8.
  4. Vous êtes fin prèt côté Linux Debian 5 (Lenny).

    • Le fichier de test joint utf8sample.txt est en UTF-8 sans BOM. Quand on tape la commande unix
      # vi utf8sample.txt
      voici le texte chinois: Nous voyons qu'il y a encore quelque chose qui bloque, les idéogrammes en Unicode envoyés par SSH Linux sont affichés par Windows on ASCII Latin-1.

Côté Windows 7, Windows Vista, Windows XP

Windows moderne est par défaut conforme à la norme UTF-8, il n'y a rien à faire sur les Locales sous Windows. Même pas pour les polices de caractères, car une police UTF-8 est installée par défaut: Arial sous Windows Microsoft. La police de caractère Arial peut faire l'affaire, bien qu'elle ne soit pas idéale, car elle n'est pas d'un pitch constant dans la largeur de chaque alphabet, ce qui n'est pas génial pour le codage en programmation, en Anglais, en Français par exemple. Mais pour un premier pas, elle suffira.

  1. Configurer la Traduction de PuTTY sous Windows

    • Lancer putty.exe sous Windows. Cliquez sur Category/Windows/Translation, dans la liste déroulante Remote character set sélectionnez UTF-8.
  2. Sélectionner une police de Caractère UTF-8 pour PuTTY sous Windows

    • Ensuite Sélectionnez Category/Windows/Appearence, cochez tout d'abord le choix [x] Allow selection of variable-pitch fonts, et cliquez sur le bouton [Change...].
    • Sur la fenêtre popup de Police, sélectionnez une police UTF-8. Le TrueType SimSun (SimSun.ttf) sera la bienvenue, mais si vous ne l'avez pas, utilisez Arial comme montre la capture d'éran. Cliquez sur [OK].
  3. Définir la Session SSH PuTTY pour la connexion sous Windows

    • Ensuite Sélectionnez Category/Session, Entrez votre Nom de domaine ou IP pour Host Name (or IP Address). Donnez un nom pour Saved Sessions), ici Session Linux, cliquez sur le bouton [Save...].
  4. Vous êtes fin prèt pour une connexion SSH en cliquant sur le bouton [Open].

Tests

Maintenant vous êtes connecté sur votre machine à distance Linux.

  1. Tester Shell

    • Ici nous testons tout d'abord si notre session SSH PuTTY est en Unicode, en exécutant la commande Shell par un caractère Unicode:
      # printf "\xc3\xa9\n"
      Il affiche é dans sur le terminal Unocode. Sous un terminal Latin-1, il donnerait é.
    • Voici le changement après l'opération. La locale par défaut C est devenu locale POSIX qui prend en charge UTF-8, en tapant la commande:
      # locale
      La LANG n'est pas prédéfinie, donc par défaut.
  2. Tester l'éditeur vi, vim

    • Le fichier de test joint utf8sample.txt est en UTF-8 sans BOM. Quand on tape la commande unix
      # vi utf8sample.txt
      voici le texte chinois si désiré: Un autre fichier de test utf8bomsample.txt en UTF-8 avec BOM (Byte Order Mark) donnera le même résultat d'affichage. Ne vous inquiétez pas sur l'indication du format de fichier dos, car le texte chinois a été saisi en Windows par NJStar et sauvé dans le PC local.

Plus de Chinois sur vi, vim

L'ordre des travaux n'a pas d'importance. Vous pouvez débuter soit par le côté Linux, soit par le Côté Windows 7. Par ailleurs, pour simplement afficher du texte en idéogrammes chinois en vim, vous n'avez pas à définir vous-même la locale, le génial Linux s'en charge.

Si vous voulez que l'interface de vim est aussi en Chinois, il faut alors définir la locale via la variable Shell $LANG parmi les possibilités suivantes:

zh_CNGB2312
zh_CN.GBKGBK
zh_CN.UTF-8UTF-8

Attention, dans chaque locale sépérée par un espace, il n'y a que la première partie qui est le nom valable des locales, par exemple une bonne déclaration:

# export LANG="zh_CN.UTF-8"

Avec cette configuration, l'interface de SHELL est aussi en langue zh_CN.UTF-8, qui affichera les messages système en texte chinois. Voici quelques commandes de test exécutées et les résultats affichés:

# date
# df
# ls nonexistent.file
.

Client Natif MySQL et Chinois en Linux

Cette démarche est aussi valable pour le client natif de MySQL /usr/bin/mysql. Pour afficher le contenu stocké en Chinois Simplifié dans une table, vous invoquez mysql par

# mysql --default-character-set=utf8 -u<unsername> -p<password> <your_dbname>
Ou bien vous invoquez mysql sans l'option --default-character-set, puis sous la console MySQL, faire une requête spéciale de définition
mysql> SET NAMES 'utf8' COLLATE utf8_general_ci;
. Et puis sous la console MySQL, faire une requête comme
mysql> SELECT NameCn FROM products WHERE (ID=358);
. Les caractères chinois s'afficherons dans le résultat.

Client Natif MySQL et Chinois en Windows

Il n'est pas possible d'afficher le Chinois en UTF-8 dans le client natif de MySQL mysql.exe, car il est lancé que par le Shell, ici cmd32.exe ou MS-DOS. MS-DOS n'accepte pas les polices UTF-8 asiatiques pour son terminal, que ce soit FangSong, SimSun... MySQL est donc limité par les polices de Ms-DOS approuvées par Microsoft: Raster Terminal, TrueType Lucida Console, Consolas qui ne comportent aucun idéogramme chinois. Même si l'on modifie dans le registre Windows, aucun effet positif ne se produit pour les fontes chinoises. Et en changeant de Code Page en Unicode: Après tout cet acharnement, dans la console MySQL, les idéogrammes s'affichent tout de même en Carré Creux. Cela veut dire que la police de caractères est bien en Unicode, qui prend en charge les codages des caractères chinois, mais dans laquelle les glyphes, ici les idéogrammes ne sont pas dessinés par le créateur de la police chargée. Pour afficher le contenu stocké en Chinois Simplifié dans une table, vous deveriez utiliser Outils Graphique d'Aministration de MySQL qui est FreeWare MySQL GUI Administrator Tools. Ou par PHPMyAdmin dans votre Navigateur.

Références

  1. FAQ de Markus Kuhn sur UTF-8 et Unicode pour Unix/Linux
    informations compréhensibles sur comment utiliser Unicode/UTF-8 en systèmes POSIX (Linux, Unix).

Envoyez vos commentaires (0)

Ajouter URL |
Pas encore de commentaires.
Votre commentaire :
Email
Web

Ou connexion :
Qui ?

Veuillez recopier la chaîne :
Chaîne de caractère à recopier dans la case à droite, sensible au MAJUSCULE et minuscule. Cette douleur est nécessaire après avoir reçu des milliers de messages quotidiens générés automatiquement.

Asia Home™ > Outils > Vim, Putty, SSH et MySQL en UTF-8 et Affichage Idéogrammes Chinois | Conditions générales de vente | Retours et remboursements | Clauses de Confidentialité | FAQ | Google+

Envie de venir ? | Appelez-nous 7/704 67 79 04 87 (non surtaxé)

Fenêtre contextuelle    Fermer
Veuillez patienter...