j'ai de temps en temps l'occasion d'utiliser des autres alphabets, notamment l'abjad arabe. Utiliser l'unicode et changer de clavier sur la console (que j'utilise tout le temps) n'est pas très clair pour moi, et même, c'est pas le sujet. Je me suis dit que je coderai mon petit script bash. Le sujet n'est pas de l'ordre de la réalisation informatique mais de l'algorithme. Je n'ai pas beaucoup d'expérience là-dedans, mais le seul algorithme dont j'aie eu l'idée est : je définis une correspondance de chaque lettre à son équivalent, par exemple g = غ, puis je prends la première lettre de mon entrée et je la compare à chaque correspondance jusqu'à ce que je trouve la bonne, puis je recommence pour la suivante. Mais ça ne me paraît vraiment pas optimal comme algo. Puis-je faire autrement ?
Aucun outil pour répondre à ce besoin ? Pas même ICU (et uconv en ligne de commande) ?
Si tu tiens vraiment à le faire toi-même n'y a-t-il pas des docs techniques donnant quelques informations ? (genre ça) J'aurais plus vu le processus se rapprocher des collations (expansions/contractions) qu'un bête mapping de points de code (1 : N).
Comme tu le sais, chaque caractère alpha-numérique a une correspondance ASCII.
Ainsi par exemple le A équivaut à 66 en ASCII, le B 67,...jusque Z 90.
Je ne suis pas un spécialiste du bash, mais je pense affirmer que beaucoup de langages bash ont une instruction qui convertit directement un caractère en sa valeur ASCII, ainsi que de faire des tables dont les éléments sont accessibles par indexation.
Dès lors il est facile de créer une table indexée :
TABLE=(caractère abjad eq A, caractère eq B,...caractère eq Z)
où par exemple, le premier élément aurait l'index 0, le deuxième 1,...le dernier 25.
"L’algorithme" de mon petit exemple serait :
Acquisition du caractère alpha au clavier
Conversion de alpha en ASCII, soit n la valeur ASCII correspondante
Effecivement, en réfléchissant trop théoriquement, j'ai oublié que je pouvais demander à mon ordinateur d'aller voir dans une case précise, et que mes caractères étaient encodés sur des nombres qui pouvaient représenter ces cases. La question était purement algorithmique, aussi je ne cherchais aucune considération sur l'Unicode :).
Merci
Algorithme de translittération
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli