Bon alors comme la migration des scripts de l'utf8 a l'iso n'est pas encore finit, j'ai essayé de faire un convertisseur qui analyse l'encodage de la chaine est fait la conversion necessaire.
La seule chose pour avoir des caractères corrects c'est donc de connaitre quel est la sortie (http-equiv final)
Cas 1 vous souhaitez une sortie en utf-8 a partir de sources mixtes, alors utilisés :
stringConverter_utf8
Et en iso-8859-1 :
stringConverter_iso
Source / Exemple :
<?php
/**
- Transforme toutes les chaines qu'elles soit utf8 ou iso en utf8
- /
class stringConverter_utf8 extends stringConverter {
function convertString($string)
{
if ($this->string_type == 'utf-8')
return $string;
else
return utf8_encode($string);
}
}
/**
class stringConverter_iso extends stringConverter {
function convertString($string)
{
if ($this->string_type == 'utf-8')
return utf8_decode($string);
else
return $string;
}
}
class stringConverter {
var $string_type = ''; //Type d'encodage
var $utf = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789²&é"\'(-è_çà)=~#{[|`\^@]}¨^$£¤ù%*µ!§:/;.?,<>?îïâûüψΨωΩΧχΦφÛÊËÜÏÎñÑõÕ??¾½¼³¹º±×÷ÁáÀÂÅåãÃäÄæÆçÇéÉÈÌíÍìøØßÿ´`αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσςΣτΤυΥ??¡¿&¢©µ·¶£®§¥?"«»?';
function __construct(){
$this->utf8_caracteres= preg_split('//', $this->utf, -1, PREG_SPLIT_NO_EMPTY);
}
function analyse($string)
{
$this->chars = preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY);
foreach($this->chars as $char) {
if ($this->string_type == '')
$this->string_type = $this->analyseChar($char);
else{
$s=$this->convertString($string);
$analyser->string_type='';
return $s;
}
}
return $string;
}
protected function analyseChar($char)
{
if (utf8_encode($char) == utf8_decode($char))
return $this->string_type;
if (in_array($char,$this->utf8_caracteres))
return 'utf-8';
return 'iso-8859-1';
}
}
?>
Conclusion :
A venir si j'y arrive un detecteur automatique de la sortie
Petit truc pour convertir un fichier complètement mélangé
<?php
function convertstr($buf)
{
require_once 'analyser.php';
$analyser = new stringConverter_iso;
$bufs = preg_split('/ /', $buf, -1, PREG_SPLIT_NO_EMPTY); //Sépare les mots
$outpout=array();
foreach($bufs as $mot) {
$outpout[]=$analyser->analyse($mot);
//$buf.=$mot.'->'.$analyser->string_type.'='.$analyser->analyse($mot).' <br />';
}
$outpout=implode(' ',$outpout);
return $outpout;
}
ob_start('convertstr');
?>
Votre page qui ressemble a rien la !
<?php
ob_end_flush();
?>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.