php template rtf en arabe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : php template rtf en arabe

Re: php template rtf en arabe

par @rthur » 19 févr. 2015, 16:47

Bonjour,

Les problèmes d'encodages de caractères sont malheureusement souvent un casse-tête.
Voici une piste pour générer du RTF : http://spin.atomicobject.com/2010/08/25 ... -with-php/

Re: php template rtf en arabe

par openzero » 19 févr. 2015, 16:06

Merci pour votre réponse.
Je suppose que oui
  echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
en testant la variable (echo) la variable s'affiche correctement, l'enregistrement dans la base de données également. le problème c'est le fichier RTF.
Avez vous une idée ? merci.

Re: php template rtf en arabe

par tof73 » 18 févr. 2015, 16:12

le fichier php qui génére le rtf est-il bien encodé en utf8 ?

php template rtf en arabe

par openzero » 18 févr. 2015, 12:28

J’utilise le code suivant pour ecrire dans un fichier rtf (contenant du français et de l’arabe) des variables php (wampserver php version 5.03.10) contenant des chaines de caractères en arabe

    echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
    $myContent = file_get_contents("modele.rtf" );
    //$myContent = str_replace("@nom@",html_entity_decode($nom),$myContent);
    //$nom = utf8_encode($nom);
    //$nom = base64_encode($nom);
    $nom = htmlspecialchars($nom) ;
    //$myContent = str_replace("@nom@",$nom,$myContent);
    $myContent =mb_ereg_replace("@nom@",$nom,$myContent);
    $newFileHandler = fopen("../impression/".$nf.".rtf","a" );
    fwrite($newFileHandler,$myContent);
    fclose($newFileHandler);


Lors de l’ouverture du fichier les caractères arabe ne s’affiche pas (بسام ) ou (ميعاوي) ou ( ????????)
En éditant manuellement le fichier résultat $nf.RTF j’ai remarqué que la chaine بسام s’écrit \'c8\'d3\'c7\'e3 (c'est quoi d’ailleurs comme codage ?)

je récupère la chaine بسام d'un formulaire ($_POST). encodé en utf-8 (j'ai vérifié avec mb_detect_encoding) ... ..l'enregistrement au niveau de la base de données ne pose pas de problème, mon problème vient du fichier RTF ma fonction écrit ceci sur le fichier:
{\rtlch\fcs1 \ab\af42\alang7169 \ltrch\fcs0 \b\f42\fs24\insrsid11479835\charrsid13048379 بسام} => affichage ميعاوي
alors que, il faut aboutir à ce résultat :
{\rtlch\fcs1 \ab\af42\alang7169 \ltrch\fcs0 \b\f42\fs24\insrsid11479835\charrsid13048379 \'C8\'D3\'C7\'E3}
J'ai trouvé la fonction suivante
    function ascii2hex($ascii) {
        $hex = '';
        for ($i = 0; $i < strlen($ascii); $i++) {
        $byte = strtoupper(dechex(ord($ascii{$i})));
        $byte = str_repeat('0', 2 - strlen($byte)).$byte;
        $hex.=$byte." ";
        }
        return $hex;
        }
mais au lieu de c8d3c7e3 j'obtiens d8a8d8b3d8a7d985 !!
comment passer de بسام à \'C8\'D3\'C7\'E3 ???
y'a t'il un moyen plus simple de fixer l'encodage à UTF-8 directement au niveau du fichier RTF(ou doc) ?
merci de m'aider.