Dans cet article, je vais montrer une possibilité pour convertir chaque caractère chinois en pinyin.
Exemple : 龙江省五大 va devenir: long2 jiang1 sheng3,xing3 wu3 da4,dai4
Ceci peut être très utile dans différentes situations (comme indexer du texte chinois, prononcer sans connaître les signes ou autre…).
J’imagine qu’il y a plusieurs façons différentes pour faire cet exercice mais je n’ai rien trouvé de précis sur le net. J’ai ainsi du y passer quelques temps avant de pouvoir venir à bout de ce casse-tête chinois.
Pour convertir en pinyin, il faut se procurer une table de correspondance entre le signe chinois et le pinyin. En voilà une : uni-pinyin. (format SQL pour plus de facilité)
Cette table qui sera créée fera le lien entre l’unicode du caractère chinois et son (ses) pinyin(s). Vous noterez que je ne me porte pas garant pour la véracité et la précision de cette table puisque je l’ai trouvée sur Internet comme vous vous en doutez. Pour les quelques tests que j’ai fait, il n’y avait pas de soucis mais on est jamais à l’abri.
Vous pouvez télécharger le code ici : convertToPinyin.zip. J’ai un peu commenté le code, il n’y a rien de compliqué en plus donc ça devrait aller.
Quelques petits éléments d’explication néanmoins :
- Le fichier EncodedStringHandler.php contient un objet pour gérer la convertion. Les fonctions utiles se trouvent dedans. En fait créer un objet juste pour ça permet de le réutiliser plus facilement par la suite. L’autre fichier est donc le fichier ou je fais appel à l’objet pour convertir.
- Pour exécuter ces fichiers, il faut évidemment avoir importer la table SQL grace au fichier téléchargeable un peu plus haut. Il faut également changer les informations de connexion à la base de donnée si besoin.
- Les fonctions mb_strlen et mb_substr ont le même rôle que respectivement les fonctions strlen et substr mais ces premières fonctionnent en multi-byte. Il faut définir l’encodage pour que ça fonctionne comme on le veut (UTF-8 en l’occurence ici).
- Si vous avez besoin de plus d’information sur les fonctions PHP utilisées, je vous invite à aller voir la documentation PHP (toujours très utile).
J’espère que ce petit article sera utile à certains. Si vous avez des soucis ou des questions, n’hésitez pas à les laisser en commentaire.