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 :

table en latin1_swedish_ci ==> rss en UTF8


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Par défaut table en latin1_swedish_ci ==> rss en UTF8
    Bonjour a tous.
    Voilà c'est problème je pense classique mais je bute.
    Je suis en train de developper un flux pour ggogle shopping dont la sortie sera en UTF8

    Ma table est en latin1_swedish_ci, et malgré divers test de conversion il y trouve toujours des :
    Problème de codage concernant l'attribut suivant
    Il semble que vos offres contiennent des caractères incorrects. Veuillez vous assurer que tous les caractères du flux sont conformes au codage indiqué.
    Je tiens a préciser que je définit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    header('Content-Type: application/rss+xml; charset=UTF-8');
    echo '<?xml version="1.0" encoding="UTF-8" ?>';
    ?>
    <rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
    et que je convertit tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    function replace_problem_characters($text) {
    $formattags = array("&");
    $replacevals = array("&");
    $text = str_replace($formattags, $replacevals, $text);
    //$in[] = '@&(amp|#038);@i'; $out[] = '&';
    $in[] = '@&(#036);@i'; $out[] = '$';
    $in[] = '@&(quot);@i'; $out[] = '"';
    $in[] = '@&(#039);@i'; $out[] = '\'';
    $in[] = '@&(nbsp|#160);@i'; $out[] = ' ';
    $in[] = '@&(eacute|#233);@i'; $out[] = 'é';
    $in[] = '@&(egrave|#232);@i'; $out[] = 'è';
    $in[] = '@&(iuml|#207);@i'; $out[] = 'ï';
    $in[] = '@&(hellip|#8230);@i'; $out[] = '...';
    $in[] = '@&(copy|#169);@i'; $out[] = '©';
    $in[] = '@&(trade|#129);@i'; $out[] = '&#153;';
    $in[] = '@&(lt|#60);@i'; $out[] = '<';
    $in[] = '@&(gt|#62);@i'; $out[] = '>';
    $in[] = '@&(laquo);@i'; $out[] = '«';
    $in[] = '@&(raquo);@i'; $out[] = '»';
    $in[] = '@&(deg);@i'; $out[] = '°';
    $in[] = '@&(mdash);@i'; $out[] = '&#151;';
    $in[] = '@&(reg);@i'; $out[] = '®';
    $in[] = '@&(&#150;);@i'; $out[] = '-';
    $in[] = '@&(#339);@i'; $out[] = '?';
    $in[] = '@&(ccedil|#199);@i'; $out[] = 'ç';
    $text = preg_replace($in, $out, $text);
    return $text;
    }
     
    function strip_html_tags($str) {
    $search = array ("'<script[^>]*?>.*?</script>'si", // Strip out javascript
    "'<[/!]*?[^<>]*?>'si", // Strip out HTML tags
    //"'([rn])[s]+'", // Strip out white space
    "'&(quot|#34);'i", // Replace HTML entities
    "'&(amp|#38);'i",
    "'&(lt|#60);'i",
    "'&(gt|#62);'i",
    "'&(nbsp|#160);'i",
    "'&(iexcl|#161);'i",
    "'&(cent|#162);'i",
    "'&(pound|#163);'i",
    "'&(copy|#169);'i",
    "'&#(d+);'e"); // evaluate as php
     
    $replace = array ("",
    "",
    //"\1",
    "\"",
    "&",
    "<",
    ">",
    " ",
    chr(161),
    chr(162),
    chr(163),
    chr(169),
    "chr(\1)");
     
    return preg_replace($search, $replace, $str);
    }
     
    $desc = strip_html_tags($desc);
    $desc = utf8_encode(replace_problem_characters($desc));
    :

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Par défaut probleme sur deux caractère
    j'ai identifié deux caractères posant un souci:

    œ
    j'ai donc mis dans mon fichier PHP, dans la fonction
    replace_problem_characters()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $in[] = '@&(rsquo|#8217);@i'; $out[] = '’';
    $in[] = '@&(#339);@i'; $out[] = 'œ';
    mais si j'enregistre le fichier puis le réouvre il me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $in[] = '@&(rsquo|#8217);@i'; $out[] = '?';
    $in[] = '@&(#339);@i'; $out[] = '?';

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ça sert a rien ton truc, pourquoi ne pas faire un htmlspecialchars ?

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Par défaut
    Ok, et je le case où?

    Car j'ai un peu essayé dans tout les sens. et ca à pas l'air de mieux sortir?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    enlève tout est fait juste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $desc = utf8_encode(htmlspecialchars($desc));

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Par défaut
    nan j'ai essaye ca aussi et c'est pareil


    Uploaded with ImageShack.us

    J'air touvé un solution en modifiant mes tables mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `products_description` SET `products_description` = replace(`products_description`, '’', ''');
    mais ca me plait pas.
    mon souci est de connaitre le code html de ’
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ´ => 	´
    ' => 	'
    ’ => ??????

Discussions similaires

  1. [RUBY] paser un flux RSS, table de hash
    Par youshi dans le forum Ruby
    Réponses: 0
    Dernier message: 21/11/2010, 15h36
  2. ALTER TABLE * CHARACTER SET UTF8
    Par jehanon dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/05/2010, 17h52
  3. [1.x] Flux RSS + requête entre plusieurs tables liées
    Par blasil64 dans le forum Symfony
    Réponses: 3
    Dernier message: 09/01/2010, 10h30
  4. Convertir Table en UTF8
    Par thibaut06 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/04/2009, 22h43

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