Php et affichage en arabe!

Résolu
Bjr,
J'ai un tres gro problem avec PHP et la langue arabe! Apres avoir ajouter le texte a la base de donnee, le texte s'affiche comme ceci "???????? ???????? ???????? ?????? ???????? ?????? ? ?? ???? "

j'ai essayé une infinité de type de codage, mais pas de solution?

merci de m'aider!!!
ciao
Configuration: Windows XP
Opera 9.10

19 réponses

Résumé de la discussion

Problème récurrent dans PHP avec la langue arabe : après insertion en base, le texte s'affiche comme des point d'interrogation, signe d'un décalage entre l'encodage utilisé et le contenu. Plusieurs répondants proposent d'aligner encoding base et affichage sur UTF-8, ou d'utiliser cp1256 pour la base, puis d'appliquer SET NAMES 'UTF8' ou SET CHARACTER SET 'utf8' lors de la connexion. Des conseils concrets préconisent aussi de modifier la requête de connexion pour fixer le jeu de caractères et d'ajuster les en-têtes HTML, notamment en déclarant charset=utf-8 et éventuellement utf-8 côté contenu. Enfin, certaines réponses recommandent d'utiliser des tables en utf8_unicode_ci et de s'appuyer sur des ressources externes pour vérifier la compatibilité des jeux de caractères, notamment en arabe.

Bobot (l’IA à votre service)
  1. bonjour

    j'avais le meme probleme le solution
    1- il faut que t'a base soit codé en cp1256
    exemple : CREATE DATABASE mabase CHARACTER SET cp1256;
    2- il fait que le codage de la page soit en utf8
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    3- apres la connexion à la base dans le fichier mysql mait cet commande
    $link = mysql_connect ("localhost","root") ;
    mysql_query("SET CHARACTER SET 'utf8';", $link)or die(mysql_error());
    1. awadi hafadak a kho moi aussi j'avais le meme prob mais daba c'est regler
    2. mysql_query('SET NAMES 'utf8'');
    3. Merci bcp j'avais le meme probleme au début :)
    4. $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
      mysql_query("SET CHARACTER SET 'utf8';", $link)or die(mysql_error());
      mysql_select_db(DB_NAME);
  2. http://kizana.fr.fo/blog-dev/component/content/article/30-the-community/55-arabecompatibilite.html
    1. au debut de ton site changer le charset parametre
      <meta http-equiv="Content-Type" content="text/html; charset= UTF8 " />
      charset= UTF8 rends ton site unicode compatibles au latin et arabe
      1. -- Structure de la table 'arabe'

        CREATE TABLE 'arabe' (
        'id' int(11) NOT NULL auto_increment,
        'sujet_1' text character set utf8 collate utf8_unicode_ci NOT NULL,
        'sujet_2' text character set utf8 collate utf8_unicode_ci NOT NULL,
        'sujet_3' text character set utf8 collate utf8_unicode_ci NOT NULL,
        PRIMARY KEY ('id')
        );

        avec ça il va marcher,
        si non voir ici: https://elalia.net/sitofficiel/
        si ça peut aider.
        1. voir ce lien

          http://www.envrac.org/index.php/2006/03/11/58-un-tutoriel-sur-le-character-encoding
          1. bonjour

            j'ai le probleme sur mon forum SMF version 1.1.11 également d'un affichage erroné lorsque l'on écrit des textes en langue arabe
            lorsque l'on prévisualise le message tout est bien mais une fois qu'on le valide s'est des point d'interrogation et des smiles

            plus haut il est préconisé ceci

            j'avais le meme probleme le solution
            1- il faut que t'a base soit codé en cp1256
            exemple : CREATE DATABASE mabase CHARACTER SET cp1256;
            2- il fait que le codage de la page soit en utf8
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            3- apres la connexion à la base dans le fichier mysql mait cet commande
            $link = mysql_connect ("localhost","root") ;
            mysql_query("SET CHARACTER SET 'utf8';", $link)or die(mysql_error());


            1-le premier point je ne sais pas comment le verifier
            2- ici par contre dans mon code source semble ok

            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

            si vous souhaitez voir le code source de la page
            au nom de domaine ( isthme.fr)

            3- ici j'ai lancer cette ligne de commande a mysqladmin
            $link = mysql_connect ("localhost","root") ;
            mysql_query("SET CHARACTER SET 'utf8';", $link)or die(mysql_error());</gras>

            et il me repond qu'il y a une erreur

            #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$link = mysql_connect ("localhost","root")' at line 1

            ma Version s'est MySQL: 4.1.22

            si quelqu'un pourrait m'informer comment resoudre ce probleme de caractere

            merci
            1. Merci ça Marche parfaitement
          2. moi c'est pluto en HTML je voix les ligne texte arabe mais avec des signe bizzar

            HELP !!!!!!!!!!!!!!!!!!!!!!!!!!!!

            merci d'avance :):)
            1. Regarde ça http://forum.hardware.fr/hfr/Programmation/Java/japonais-chinois-arabe-sujet_105545_1.htm; normalement c'est résolu
          3. Desolé de remonter un vieux sujet comme celui ci, mais il se trouve que j'ai exactement le meme souci, et même en utilisant la solution proposée, j'ai toujours des "??" à la place des caractères arabes.

            J'ai testé sous fédora, sous windows, et le résultat est le même....

            si vous avez des idées du souci merci.
            1. tu peux nous donner plus de détailles
            2. @rmed19bonjour,

              en faites, j'ai pas tres bien compris comment je dois faire le codage, ou dois je l'ecrire
              keske je dois ouvrir

              merci pour une explication
            3. ajouter c'ette code mysql_query("SET NAMES 'UTF8' "); dans votre requtte sql
              exemple
              mysql_select_db($database_config, $config);
              $query_Modifier = sprintf("SELECT * FROM articles WHERE Id_article = %s", GetSQLValueString($colname_Modifier, "int"));
              mysql_query("SET NAMES 'UTF8' ");
            4. ???? ????????? ?????? ??????? ?? ???? ?? ???? ???????? ?? ??? ?????? ?????? ??????? ?? ?????? ?????? ??????? ???????? ???? ????????? ??? ??? ????? ???? ???? ????? ?????? ?? ???? "?? ??????" ??? ?????? ???? ?????? ???? ??? ?????? ???????? ???????? ????? ????? ????? ??? ?????? ?????? ?????????? ?????? ???? ?????????..
              ???? ????????? ?????? ??????? ?? ???? ?? ???? ???????? ?? ??? ?????? ?????? ??????? ?? ?????? ?????? ??????? ???????? ???? ????????? ??? ??? ????? ???? ???? ????? ?????? ?? ???? "?? ??????" ??? ?????? ???? ?????? ???? ??? ?????? ???????? ???????? ????? ????? ????? ??? ?????? ?????? ?????????? ?????? ???? ?????????.
              ???? ????????? ?????? ??????? ?? ???? ?? ???? ???????? ?? ??? ?????? ?????? ??????? ?? ?????? ?????? ??????? ???????? ???? ????????? ??? ??? ????? ???? ???? ????? ?????? ?? ???? "?? ??????" ??? ?????? ???? ?????? ???? ??? ?????? ???????? ???????? ????? ????? ????? ??? ?????? ?????? ?????????? ?????? ???? ?????????.
            5. la melleiur solution c'est mysqli_set_charset($connexion, 'utf8');
          4. slt pour tous ici, j'ai un problème mais avec JAVA, j'utilise JAVA pour me connecter a ma base des donnée qui contient des caractères arabe mais quand elles s'affichent dans mon textarea elles s'affiche comme ça " ?????????????? ???? ??".
            SVP aider moi
            1. Vaux mieux si tu pose ton problème dans forum java :

              la solution est de changer la locale :

              expl

              Locale.setDefault(new Locale ("ar", "")); 
              JFrame f = new JFrame("Test arabe"); 
              f.getContentPane().add(new JLabel("????...")); 
              f.pack(); 
              f.setVisible(true);
          5. Salam,Bonjour,holow

            voila ce que j'ai fait:
            premierement pour la connexion a la base de donnée vous mettez : SET NAMES 'UTF8'

            et dans le fichier php vous mettez les metas suivant:

            <meta http-equiv="Content-Language" content="ar-tn">
            <meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
            et tous va marche
            merci et bon chance

            here what i did :
            first for the connexion to the data base u put : SET NAMES 'UTF8'

            and in the php file u put those metas :

            <meta http-equiv="Content-Language" content="ar-tn">
            <meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
            and evry thing is all right
            thenks and good luck

            kaddour_13@yahoo.fr
            1. Bonjour tous

              J'ai le meme problème mais j'utilise pas de base de données, je veux juste afficher une lettre arabe avec dreamweaver, mais ça m'apparaît des points d'interrogation.

              Je fait juste <? echo'أ'; ?> et ce que je voie c'est '?'

              Pouvez vous me dire se que je doit faire pour résoudre se problème? parceque ça me bloque pour continuer le développement de mon application.
              1. merci pour ccm et tous ceux qui ont eu le temps de me repondre!
                merci special pour " rmed19 "
                1. salut j s boumediene d'algerie:
                  essaye de mettre dans la fonction de connexion la ligne suivante:
                  SET NAMES 'UTF8'

                  pr plus d'info: skype :kaddour136

                  kaddour_13@yahoo.fr
                  1. a la page html le code source est:

                    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
                    <HTML dir="ltr"><HEAD><TITLE></TITLE>

                    <META http-equiv=Content-Type content="text/html; charset=ISO-8859-1">

                    a la page html le code source est:

                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">

                    <HTML dir=rtl><HEAD><link rel="shortcut icon" href="http://www.univ-k.rnu.tn/favicon.ico">
                    <TITLE>جامعة القيروان || مستجدات</TITLE>

                    <META http-equiv=Content-Type content="text/html; charset=utf-8">
                    <meta http-equiv="Content-Language" content="ar-tn">

                    dans la base de donne le codage des champs est :

                    utf8_unicode_ci
                    1. Salut,

                      Sans voir le code source de ta page nous ne pouvons pas t'aider ...

                      ++
                      1. Bjr,
                        Tjr pas de rep! aidez moi stp!