patastronch
Messages postés3Date d'inscriptionsamedi 5 mars 2005StatutMembreDernière intervention 8 novembre 2010 8 nov. 2010 à 15:28
Après avoir testé et corrigé mon code :
function convert($str){
$str_temp2=$str;
$str_res="";
$str_para=2000;
while (strlen($str_temp2)>$str_para){
$str_temp=substr($str_temp2,0,$str_para);
$str_temp2=substr($str_temp2,$str_para,strlen($str_temp2)-$str_para);
$str_res=$str_res.utf8_encode(convertUTF8_to_8859($str_temp));
}
$str_res=$str_res.utf8_encode(convertUTF8_to_8859($str_temp2));
return $str_res;
}
Au passage si quelqu'un a une idée sur le pourquoi sa fonction ne prend pas les chaines de caractère trop longues ca m'intéresse.
patastronch
Messages postés3Date d'inscriptionsamedi 5 mars 2005StatutMembreDernière intervention 8 novembre 2010 8 nov. 2010 à 15:12
J'ai résolu de manière un peu bourrine le problème :
function convert($str){
$str_temp2=$str;
$str_res="";
if(strlen($str_temp2)>1000){
while (strlen($str_temp2)>1000){
$str_temp=substr($str_temp2,0,999);
$str_temp2=substr($str_temp2,1000,strlen($str_temp2)-1);
$str_res=$str_res.utf8_encode(convertUTF8_to_8859($str_temp));
}
}else{
$str_res=utf8_encode(convertUTF8_to_8859($str_temp2));
}
return $str_res;
}
patastronch
Messages postés3Date d'inscriptionsamedi 5 mars 2005StatutMembreDernière intervention 8 novembre 2010 8 nov. 2010 à 14:52
J'ai le même soucis que ORDLA. La fonction fonctionne a merveille avec les chaines pas trop longue mais des qu'elle dépasse un certain nombre de caractère ca "ne fait plus rien".
Dommage ...
cs_ordla
Messages postés2Date d'inscriptionsamedi 15 août 2009StatutMembreDernière intervention18 août 2009 18 août 2009 à 22:50
je vois pas bien où est le problème ça marche pas chez moi pour une langue chaîne: j'ai une chaîne de 4700 caractère, ce code m'affiche une page blanche sans message d'erreur sans rien... je comprend pas, je n'utilise ni GET ni rien je change juste la valeur de $str que je lui affecte une chaîne plus langue.
domxml
Messages postés7Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention16 août 2009 16 août 2009 à 12:31
Bonjour ORDLA,
J'ai fait un test de mon coté, la fonction ne pose un problème de limit de nombre de caractère et d'ailleurs y a pas de raison. Vérifie de ton coté sur le $str n'est pas passé en GET ou autre chose de ceci.
Cdt
cs_ordla
Messages postés2Date d'inscriptionsamedi 15 août 2009StatutMembreDernière intervention18 août 2009 15 août 2009 à 17:34
Bonjour,
j'étais tout à l'heure à la recherhce de ton script j'ai tombé sur le tien c'es merveilant mais un grand probleme s'est posé c'est que ta vaiable $str ne peut prendre une chaîne son nombre de caractères supérieur à 404. y a-t-il une solution??
tom0602
Messages postés1Date d'inscriptionmercredi 1 mars 2006StatutMembreDernière intervention 8 octobre 2008 8 oct. 2008 à 21:12
Merci bcp :)
TheGuern
Messages postés32Date d'inscriptionmercredi 7 mai 2003StatutMembreDernière intervention25 mars 2008 25 mars 2008 à 10:25
Très bien pour la fonction is_utf8($string) permettant de trouver l'encodage d'un caractère ou d'un chaîne. Comme quoi il faudrait un peu plus visiter le site du W3C...
linerok
Messages postés1Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention29 novembre 2007 29 nov. 2007 à 18:16
Pareil que SYNOPLE, sans la bière !
Franchement t'as résolu tous mes problèmes d'un coup d'un seul, cher DOMXML !
synople
Messages postés6Date d'inscriptionvendredi 7 mars 2003StatutMembreDernière intervention19 novembre 2007 19 nov. 2007 à 23:23
MERCI MILLE FOIS, TU VIENS DE ME SAUVER LA MISE SUR UN PB QUI ME PRENAIT LA TETE DEPUIS 1 SEMAINE SUE UNE BOUTIQUE DE ECOMMERCE. JE T'OFFRE UNE BIERE A L'OCCASION : -)
thunderfear
Messages postés99Date d'inscriptionlundi 8 septembre 2003StatutMembreDernière intervention 1 septembre 2010 9 avril 2007 à 18:47
J'en avais justement besoin ^^
10/10 ;)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 déc. 2006 à 16:29
ben oui, ça convertit de l'utf8...ou vers l'utf8...
utf8_decode convertit de l'utf8 vers de l'iso 8859-1. Forcément, si ta chaîne n'est pas de l'utf8, ou de l'iso 8859-1 pour l'inverse, tu vas avoir des soucis. Mais dans ce cas c'est qu'il y a un soucis dans la maîtrise de l'encodage dans ton code. Tu es censé savoir ce que tu reçois...
domxml
Messages postés7Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention16 août 2009 28 déc. 2006 à 15:35
dsl apparament ya un mauvais affichage des caractères russes mais tu peux mettre le carcatère russe dans la variable $str pour bien voir le cas et surtout que la fonction utf8_decode Convertit seuelement les chaines UTF-8 en ISO-8859-1
et que pour les autres langues il affiche "??????????"
Bien à toi :)
domxml
Messages postés7Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention16 août 2009 28 déc. 2006 à 15:30
Salut MALAlAM :)
essaie de faire executer cette page et tu va voir pkoi je verifié tous ça et que j'aurais du utiliser simplement utf8_decode() ;)
<html>
<head>
<title>test de differance entre </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<?
$str = "ВЛАСТИ РОССИИ";
echo "affichage de la chaine russe sans décodage utf-8==> $str
";
$str = utf8_decode($str);
echo "affichage de la chaine russe avec décodage utf-8 ==>$str
";
?>
</html>
Merci;) j'espère que tu auras plus de kestion ou des trucs inexplicables et si c'est le cas merci de relire Commentaire de : domxml le 28/12/2006 10:40:21
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 déc. 2006 à 14:42
Donc quoi ? Pourquoi dois-tu le vérifier ?
domxml
Messages postés7Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention16 août 2009 28 déc. 2006 à 13:02
utf8_decode -- Convertit une chaîne UTF-8 en ISO-8859-1
utf8_encode -- Convertit une chaîne ISO-8859-1 en UTF-8
donc je dois bien verfier que la chaine à convertir contenant des caratères iso-8859-1
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 déc. 2006 à 12:10
Ca n'expolique pas pourquoi tu n'utilises pas directement utf8_decode () et utf8_encode () ... ? Quel apport ?
domxml
Messages postés7Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention16 août 2009 28 déc. 2006 à 10:40
voilà je reponds à vos kestions
tout d'abord pour le valeur retourné par les fonctions de type string exemple "TRUE", c'est vrai ça étais etre retourné sous forme de boolien==> ça reste une amélioration.
Alors pour l'explication de besoin ce Code:
le besoin c'etais ya des pages dont les formats encodés en UTF-8. De plus dans les balises meta c'est pas indiqué le charset iso-8859-1. Donc si on met des String contentant des carcatères français accentués ses pages vont avoir automatiquement l'encodage UTF-8(vu que la format de la page c'est en UTF-8).
Alors pour convertir ses chaines là en iso-8859-1, il ya la fameuse fonction utf8-decode().Mais le pb k'elles sont les caratères à convertir surtout s'il ya plusieurs langues exemple sur les forum internationaux ya le japonais, russe, arabe... (c'est pour ça la page est en UTF-8 car elle englobe tous)
Et là j'ai proposé cette solution==> C'est convertir que les chaines qui contiennent des caractères Français sont elle retourne la chaine comme elle l'est
L'algorithme:
si (chaine en UTF-8) alors
si(la chaine contient des chaines accentué ) alors
on convertit avec la fonction utf8-encode
sinon
on retrourne la chaine sans la modifié
finsi
sinon
on retrourne la chaine sans la modifié
finsi
> Donc on convert la chaine de fonction UTF-8 en iso-8859-1 seulement dans le cas où une chaine UTF-8 contenant des caractères accentués français
Pour le première Commentaire posté l'encodage ça rien avoir avec le Apache ou autre c'est juste relié au format de la page et au charset utilisé
je crois que le code est bien commenté si vous voulez avoir plus de precision
Voilou
Merci
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 déc. 2006 à 09:23
Hello, j'ai un peu de mal aussi...peux-tu expliquer plus clairement l'intérêt de ton code ? Je passe les inexactitude de code : pourquoi retourner "TRU3 ou "FALSE" au lieu de vrais booléens...? Par exemple.
vilhjalms
Messages postés591Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention16 juillet 20092 27 déc. 2006 à 15:48
8 nov. 2010 à 15:28
function convert($str){
$str_temp2=$str;
$str_res="";
$str_para=2000;
while (strlen($str_temp2)>$str_para){
$str_temp=substr($str_temp2,0,$str_para);
$str_temp2=substr($str_temp2,$str_para,strlen($str_temp2)-$str_para);
$str_res=$str_res.utf8_encode(convertUTF8_to_8859($str_temp));
}
$str_res=$str_res.utf8_encode(convertUTF8_to_8859($str_temp2));
return $str_res;
}
Au passage si quelqu'un a une idée sur le pourquoi sa fonction ne prend pas les chaines de caractère trop longues ca m'intéresse.
8 nov. 2010 à 15:12
function convert($str){
$str_temp2=$str;
$str_res="";
if(strlen($str_temp2)>1000){
while (strlen($str_temp2)>1000){
$str_temp=substr($str_temp2,0,999);
$str_temp2=substr($str_temp2,1000,strlen($str_temp2)-1);
$str_res=$str_res.utf8_encode(convertUTF8_to_8859($str_temp));
}
}else{
$str_res=utf8_encode(convertUTF8_to_8859($str_temp2));
}
return $str_res;
}
8 nov. 2010 à 14:52
Dommage ...
18 août 2009 à 22:50
16 août 2009 à 12:31
J'ai fait un test de mon coté, la fonction ne pose un problème de limit de nombre de caractère et d'ailleurs y a pas de raison. Vérifie de ton coté sur le $str n'est pas passé en GET ou autre chose de ceci.
Cdt
15 août 2009 à 17:34
j'étais tout à l'heure à la recherhce de ton script j'ai tombé sur le tien c'es merveilant mais un grand probleme s'est posé c'est que ta vaiable $str ne peut prendre une chaîne son nombre de caractères supérieur à 404. y a-t-il une solution??
8 oct. 2008 à 21:12
25 mars 2008 à 10:25
28 janv. 2008 à 13:44
29 nov. 2007 à 18:16
Franchement t'as résolu tous mes problèmes d'un coup d'un seul, cher DOMXML !
19 nov. 2007 à 23:23
9 avril 2007 à 18:47
10/10 ;)
28 déc. 2006 à 16:29
utf8_decode convertit de l'utf8 vers de l'iso 8859-1. Forcément, si ta chaîne n'est pas de l'utf8, ou de l'iso 8859-1 pour l'inverse, tu vas avoir des soucis. Mais dans ce cas c'est qu'il y a un soucis dans la maîtrise de l'encodage dans ton code. Tu es censé savoir ce que tu reçois...
28 déc. 2006 à 15:35
et que pour les autres langues il affiche "??????????"
Bien à toi :)
28 déc. 2006 à 15:30
essaie de faire executer cette page et tu va voir pkoi je verifié tous ça et que j'aurais du utiliser simplement utf8_decode() ;)
<html>
<head>
<title>test de differance entre </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<?
$str = "ВЛАСТИ РОССИИ";
echo "affichage de la chaine russe sans décodage utf-8==> $str
";
$str = utf8_decode($str);
echo "affichage de la chaine russe avec décodage utf-8 ==>$str
";
?>
</html>
Merci;) j'espère que tu auras plus de kestion ou des trucs inexplicables et si c'est le cas merci de relire Commentaire de : domxml le 28/12/2006 10:40:21
28 déc. 2006 à 14:42
28 déc. 2006 à 13:02
utf8_encode -- Convertit une chaîne ISO-8859-1 en UTF-8
donc je dois bien verfier que la chaine à convertir contenant des caratères iso-8859-1
28 déc. 2006 à 12:10
28 déc. 2006 à 10:40
tout d'abord pour le valeur retourné par les fonctions de type string exemple "TRUE", c'est vrai ça étais etre retourné sous forme de boolien==> ça reste une amélioration.
Alors pour l'explication de besoin ce Code:
le besoin c'etais ya des pages dont les formats encodés en UTF-8. De plus dans les balises meta c'est pas indiqué le charset iso-8859-1. Donc si on met des String contentant des carcatères français accentués ses pages vont avoir automatiquement l'encodage UTF-8(vu que la format de la page c'est en UTF-8).
Alors pour convertir ses chaines là en iso-8859-1, il ya la fameuse fonction utf8-decode().Mais le pb k'elles sont les caratères à convertir surtout s'il ya plusieurs langues exemple sur les forum internationaux ya le japonais, russe, arabe... (c'est pour ça la page est en UTF-8 car elle englobe tous)
Et là j'ai proposé cette solution==> C'est convertir que les chaines qui contiennent des caractères Français sont elle retourne la chaine comme elle l'est
L'algorithme:
si (chaine en UTF-8) alors
si(la chaine contient des chaines accentué ) alors
on convertit avec la fonction utf8-encode
sinon
on retrourne la chaine sans la modifié
finsi
sinon
on retrourne la chaine sans la modifié
finsi
> Donc on convert la chaine de fonction UTF-8 en iso-8859-1 seulement dans le cas où une chaine UTF-8 contenant des caractères accentués français
Pour le première Commentaire posté l'encodage ça rien avoir avec le Apache ou autre c'est juste relié au format de la page et au charset utilisé
je crois que le code est bien commenté si vous voulez avoir plus de precision
Voilou
Merci
28 déc. 2006 à 09:23
27 déc. 2006 à 15:48
Voir aussi l'encodage d'apache, de la page etc ...