function importer_charset($texte, $charset = 'AUTO') { // on traite le cas le plus frequent iso-8859-1 vers utf directement pour aller plus vite ! if (($charset == 'iso-8859-1') && ($GLOBALS['meta']['charset']=='utf-8') && function_exists('utf8_encode')){ $texte = corriger_caracteres_windows($texte, 'iso-8859-1','unicode'); $texte = utf8_encode($texte); return $texte; } return unicode2charset(charset2unicode($texte, $charset)); }
function corriger_caracteres($texte) { $texte = corriger_caracteres_windows($texte); $texte = supprimer_caracteres_illegaux($texte); return $texte; }
/** * Importer un texte depuis un charset externe vers le charset du site * * Les caractères non resolus sont transformés en `{`; * * @param string $texte * Texte unicode à importer * @param string $charset * Charset d'origine du texte * Par défaut (AUTO), le charset d'origine est celui du site. * @return string * Texte transformé dans le charset site **/ function importer_charset($texte, $charset = 'AUTO') { static $trans = array(); // on traite le cas le plus frequent iso-8859-1 vers utf directement pour aller plus vite ! if ($charset == 'iso-8859-1' && $GLOBALS['meta']['charset'] == 'utf-8') { $texte = corriger_caracteres_windows($texte, 'iso-8859-1', $GLOBALS['meta']['charset']); if (init_mb_string()) { if ($order = mb_detect_order() and mb_detect_order($charset)) { $s = mb_convert_encoding($texte, 'utf-8', $charset); } mb_detect_order($order); # remettre comme precedemment return $s; } // Sinon, peut-etre connaissons-nous ce charset ? if (!isset($trans[$charset])) { if ($cset = load_charset($charset) and is_array($GLOBALS['CHARSET'][$cset])) { foreach ($GLOBALS['CHARSET'][$cset] as $key => $val) { $trans[$charset][chr($key)] = unicode2charset('&#' . $val . ';'); } } } if (count($trans[$charset])) { return str_replace(array_keys($trans[$charset]), array_values($trans[$charset]), $texte); } return $texte; } return unicode2charset(charset2unicode($texte, $charset)); }