IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Importation de Texte formaté en RTF


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Par défaut Importation de Texte formaté en RTF
    Bonjour,

    Je suis actuellement en train de développer un utilitaire d'importation et exportation de données d'une BDD (A) a une seconde (B).

    La base de donnée (A) est mise a jour par un programme.
    Dans cette BDD, une table contient des champs TEXTE.
    Les données de celui-ci contiennent le format et mise en forme du texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 MS Sans Serif;}}
    {\colortbl ;\red0\green0\blue0;}
    \viewkind4\uc1\pard\qc\cf1\lang1036\ul\b\f0\fs20 
    \par Cr\'e9dit pour diff\'e9rence entre le prix r\'e9gulier et le prix inscrit au contrat .
    \par \ulnone\b0 
    \par }
    Qui me donne ceci sur un document en rich text
    Crédit pour différence entre le prix régulier et le prix inscrit au contrat .
    .

    Cette donnée est reprise dans une variable.
    Si je fait un Echo de celle-ci,tous les caractères sont présents.

    Lorsque que j'importe cette variable dans la deuxième BDD (B)
    Les données sont transformées en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {rtf1ansiansicpg1252deff0{fonttbl{f0nnilfcharset0 MS Sans Serif;}}
    {colortbl ;red0green0lue0;}
    viewkind4uc1pardqccf1lang1036ulf0fs20 
    par Cr'e9dit pour diff'e9rence entre le prix r'e9gulier et le prix inscrit au contrat .
    par ulnone0 
    par }
    Tous les \ sont perdus et certains caratères transformés. (\b devient )

    L'utilitaire est écrit en PHP et les Base de données en MySql sous InnoDB

    J'ai testé de nombreuses fonctions mais rien n'y fait.

    Un peu d'aide me ferai vraiment plaisir.
    Bonne Journée

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Quel est le jeu de caractères de ton code PHP d'une part, de tes pages HTML de l'autre ?

    Peux-tu faire un SHOW VARIABLES LIKE 'char%' depuis ton PHP sur chacune de tes deux bases de données ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Par défaut
    Bonjour

    Voici la réponse a ta demande

    Pour php identique sur les 2 BDD

    Caractere_set

    _client utf8
    _connection utf8
    _database latin1
    _filesystem binary
    _Result utf8
    _server latin1
    _system utf8
    dir c:\..........\share\charset\

    Pour le HTML
    Pas de language particulier
    xml:lang='fr' et lang='fr' dans les balises du head

    a ta dispo si tu as besoin d'autres renseignements
    Bonne journée et merci de ton intérèt.

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Il ne s'agit pas de langage mais d'encodage... en HTML, c'est une balise META de ce genre-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    A titre de test, peux-tu passer la requête suivante juste après ta connexion PHP, et re-tester tes caractères bizarres ?


  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Par défaut
    Désolé pour la réponse précédente...

    J'ai fait un test avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    Aucune différence.


    Pour ton SET NAMES LATIN1 Euh je ne vois pas ou le mettre dans ma requete ...

    Mais j'ai testé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $mysqli = new mysqli('Serveur','Login','MDP','Base');
    $charset = $mysqli->Character_set_name();
    printf ("Jeu de caractères courant : %s\n", $charset);
    $mysqli->close();
    Il me retourne bien : Jeu de caractères courant :latin1

    je te remercie de ton intérêt pour ce post
    Bonne journée

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Citation Envoyé par BartoLoco Voir le message
    Pour ton SET NAMES LATIN1 Euh je ne vois pas ou le mettre dans ma requete ...
    pas dans ta requête, c'est une requête à part entière que tu passes juste après ta connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mysqli = new mysqli('Serveur','Login','MDP','Base');
    $mysqli->query('SET NAMES latin1') ;
    // ou encore : $mysqli->query('SET NAMES cp1252') ;
    Citation Envoyé par BartoLoco Voir le message
    Mais j'ai testé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $mysqli = new mysqli('Serveur','Login','MDP','Base');
    $charset = $mysqli->Character_set_name();
    printf ("Jeu de caractères courant : %s\n", $charset);
    $mysqli->close();
    Il me retourne bien : Jeu de caractères courant :latin1
    euh... c'est totalement contradictoire avec les SHOW VARIABLES, qui indiquent utf8 pour client, connexion et résultat...

Discussions similaires

  1. [Excel 2003] import fichier texte : format nombre
    Par GEOFDEN dans le forum Excel
    Réponses: 2
    Dernier message: 01/05/2010, 12h13
  2. Insert RTF text format in MSword
    Par Charaf Eddine dans le forum VBA Word
    Réponses: 2
    Dernier message: 06/10/2009, 11h37
  3. importer un texte sous format xml
    Par gorgonite dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/08/2006, 22h16
  4. Enregistrer un texte formaté RTF d'un RichEdit dans un Blob
    Par dem dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/01/2005, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo