PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Forum Général PHP » php template rtf en arabe » 18-02-2015 11:37:27

paskal++
Réponses : 0

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.

Pied de page des forums

Propulsé par FluxBB