Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/06/2011, 13h16   #1
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 236
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 236
Points : 35
Points : 35
Envoyer un message via MSN à gotcha5832
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 :
Citation:
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 :
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 :
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));
:
gotcha5832 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h39   #2
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 236
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 236
Points : 35
Points : 35
Envoyer un message via MSN à gotcha5832
Par défaut probleme sur deux caractère

j'ai identifié deux caractères posant un souci:
Citation:

œ
j'ai donc mis dans mon fichier PHP, dans la fonction
replace_problem_characters()
Code :
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 :
1
2
$in[] = '@&(rsquo|#8217);@i'; $out[] = '?';
$in[] = '@&(#339);@i'; $out[] = '?';
gotcha5832 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h42   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
ça sert a rien ton truc, pourquoi ne pas faire un htmlspecialchars ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h50   #4
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 236
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 236
Points : 35
Points : 35
Envoyer un message via MSN à gotcha5832
Ok, et je le case où?

Car j'ai un peu essayé dans tout les sens. et ca à pas l'air de mieux sortir?
gotcha5832 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h56   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
enlève tout est fait juste

Code :
$desc = utf8_encode(htmlspecialchars($desc));
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h07   #6
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 236
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 236
Points : 35
Points : 35
Envoyer un message via MSN à gotcha5832
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 :
UPDATE `products_description` SET `products_description` = replace(`products_description`, '’', ''');
mais ca me plait pas.
mon souci est de connaitre le code html de ’
Code :
1
2
3
4
 
´ => 	&#180;
' => 	&#39;
’ => ??????
gotcha5832 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 15h00   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
ouai celui c'est pas une caractère iso, c'est parce que ton texte c'est du copier coller de word, t'as essaye avec un mysql_set_charset, je sais plus si ça convertie le rendu des table ou pas,

sinon il va falloir faire un iconv a la place du utf8_encode


Code :
iconv('Windows-1252', 'UTF-8//TRANSLIT', htmlspecialchars($desc));
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 11h22   #8
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 236
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 236
Points : 35
Points : 35
Envoyer un message via MSN à gotcha5832
Je te remercie.
J'avais lutter puis laisser tomber ce pb.. et je le reprend
ca marche mais bizarrement ca me convertit
Citation:
´ en '’
une idée
gotcha5832 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h08.


 
 
 
 
Partenaires

Hébergement Web