Created 2011-10-29 00:37:00
Updated 2023-11-22 15:29:07
Le client natif MySQL est configuré par défaut 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. Les caractères chinois ne sont pas immediatement affichés par défaut.
Le client natif MySQL est une commande qui s'exécute par interpéteur de commande nommé Shell. Ils sont deux tyquement, l'un Linux/Unix à travers une session SSH distante par PuTTY à partir du système Windows 7 par exemple. L'autre MsDOS ou une fenêtre interactive cmd.exe sous Windows.
En Linux, 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.
Il faut installer les locales UTF8, les polices de caractères Chinois.
# dpkg-reconfigure locales.
en_US ISO-8859-1
zh_CN GB2312
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
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)
# 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.
# vi utf8sample.txtvoici 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.
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.
Maintenant vous êtes connecté sur votre machine à distance Linux.
# printf "\xc3\xa9\n"Il affiche é dans sur le terminal Unocode. Sous un terminal Latin-1, il donnerait é.
# localeLa LANG n'est pas prédéfinie, donc par défaut.
# cat utf8sample.txtvoici 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.
Cette démarche est 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 tblproducts WHERE (ID IN (358,20506));. Les caractères chinois s'afficherons dans le résultat. .
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.
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.
Voici le test et échec:
Lancer une console Ms-Dos par commande Windows cmd.exe:
.
Cliquez sur la boîte système, on change de police de caractère en police console Unicode: Lucida Console,
.
On tape la commande: Et une requête sous la console MySQL pour changer en UTF-8:
.
Et puis sous la console MySQL, faire une requête comme. Le résultat que voici:
Les caractères chinois sont affichés en carré creux: démentez-moi SVP, il n'existe pas à ce jour
une police de caractère Console Unicode reconnue par MsDos qui contient des idéogrammes chinois.
Sinon il existe une méthode de triche, vous modifiez le nom de police via un éditeur de police de caractère,
le nommant en "Lucida Console".
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.