a
     
 
       
   Developpeur web    
       
   Php Mysql et divers    
       
   Shitao    
   S?n?que    
   Recettes    
       


> D?tecter si une chaine est encod?e en UTF-8

J'utilise deux fonctions (qui proviennent des notes de la doc www.php.net) pour tester une chaine et d?tecter s'il s'agit d'un encodage utf8 ou pas. Choisissez celle qui vous plait le plus, de mon cot? j'opte pour la premi?re.
N'utilisez pas la fonction native de php 'mb_detect_encoding', qui fonctionne mal.


function detectUTF8($string)
{
return preg_match('%(?:
[\\xC2-\\xDF][\\x80-\\xBF] # non-overlong 2-byte
|\\xE0[\\xA0-\\xBF][\\x80-\\xBF] # excluding overlongs
|[\\xE1-\\xEC\\xEE\\xEF][\\x80-\\xBF]{2} # straight 3-byte
|\\xED[\\x80-\\x9F][\\x80-\\xBF] # excluding surrogates
|\\xF0[\\x90-\\xBF][\\x80-\\xBF]{2} # planes 1-3
|[\\xF1-\\xF3][\\x80-\\xBF]{3} # planes 4-15
|\\xF4[\\x80-\\x8F][\\x80-\\xBF]{2} # plane 16
)+%xs', $string);
}


OU

function is_utf8($str) {
    $c=0; $b=0;
    $bits=0;
    $len=strlen($str);
    for($i=0; $i<$len; $i++){
        $c=ord($str[$i]);
        if($c > 128){
            if(($c >= 254)) return false;
            elseif($c >= 252) $bits=6;
            elseif($c >= 248) $bits=5;
            elseif($c >= 240) $bits=4;
            elseif($c >= 224) $bits=3;
            elseif($c >= 192) $bits=2;
            else return false;
            if(($i+$bits) > $len) return false;
            while($bits > 1){
                $i++;
                $b=ord($str[$i]);
                if($b < 128 || $b > 191) return false;
                $bits--;
            }
        }
    }
    return true;
}




retour

  Tags : encodage


> Fonction inverse unhtmlentities et caract?re "euro"
> Nettoyer l'encodage windows cp1252 en ISO-88591 "propre"
> Probl?me avec le caract?re ' apostrophe (arrondie) transform? en ? par utf8_decode
> Utiliser la librairie Iconv chez ovh en mutualis
Cylman
  Tags : encodage


> Fonction inverse unhtmlentities et caract?re "euro"
> Nettoyer l'encodage windows cp1252 en ISO-88591 "propre"
> Probl?me avec le caract?re ' apostrophe (arrondie) transform? en ? par utf8_decode
> Utiliser la librairie Iconv chez ovh en mutualis



RSS    |    Mes liens    |    Syndication    |    Plan    |    Sitemap XML    |    Cr?ation de site web ? Carcassonne