Pour faire vite, dans un fichier texte (un code source PHP est un fichier texte), l'éditeur nous montre des lettres mais il stocke des nombres sur le disque dur (souvenez vous, le disque dur est une suite de 0 et de 1, c'est donc des nombres en binaire et pas des lettres). Il lui faut donc une table de correspondance entre les lettres et les nombres. Le format utilisé pour les nombres (l'octet) permet d'avoir 256 lettres distinctes, ce qui est trop peu pour couvrir tout les alphabets de la terre. Par conséquent, il existe plusieurs tables de correspondances, appellées charsets (ou "character set", ou encore "jeu de caractère"). Il en existe pour tout les alphabets en fait. Il est donc impossible d'avoir plusieurs alphabets dans le même document, et de plus il faut spécifier le charset utilisé dans chaque document. Je dis que c'est impossible, mais ce n'est plus vrai. C'était impossible jusqu'à l'apparition d'unicode (et de UTF-8) qui utilise un format différent pour le stockage des caractères. De ce fait, tout les alphabets peuvent être exprimé avec le même charset car il offre des milliers de possibilités de caractères.
Dans ton cas particulier, tu utilises probablement gedit, qui permet d'enregistrer dans la plupart des charsets connu, dont l'utf-8 (ou l'iso-8859-6 qui est le charset arabe, mais je te conseille plutôt d'utiliser l'utf-8, c'est un charset d'avenir). Cherches dans les options quand tu fais "enregistrer sous", c'est quelquepart.
Si tu encodes ta page en utf-8 (ou un autre charset, quel qu'il soit d'ailleurs), il faut que tu le dises au navigateur, comme l'a expliqué fadex. Pour une page en utf-8 :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Comme tu programmes en PHP, il y a de fortes chances que tu utilises mysql. Il faut que tu choisisse un collation qui correspond quand tu créés tes tables. La collation c'est des règles que mysql applique quand tu va faire des recherches, par exemple si tu cherches "vélo" et qu'il trouve "velo", il va savoir que "é" et "e" c'est presque pareil, donc il va dire que vélo == velo. Bref, ça aide pour les recherches (c'est un exemple).
De plus, il ne faut pas oublier de dire à mysql que tu utilises utf-8. Dès que tu es connecté, tu dois executer la requête
mysql_query("SET NAMES utf8");
Et euh voila je crois que j'ai fait le tour...
C'est un peu hors sujet, mais sur phpclasses il y a un developpeur qui cherche à implémenter la langue arabe en PHP, et il a déjà fait des classes intéressantes. Voici sa page http://www.phpclasses.org/browse/author/189864.html
Partager