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


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


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



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