2017-01-06 3 views
0

я использовал, чтобы иметь эту миленькую функцию, чтобы перевести странные ISO-8895-15 символы в UTF-8 в строке, так что не нарушит RSS/Atom каналыiconv_set_encoding() осуждается сломал нужную функцию

function convertCharset($contents) { 
    iconv_set_encoding("internal_encoding", "ISO-8859-15"); 
    iconv_set_encoding("output_encoding", "ISO-8859-1"); 
    ob_start("ob_iconv_handler"); 
    echo $contents; 
    $contents = ob_get_clean(); 
    $contents = strtr($contents, array(
    "\x80" => "e", 
    "\x81" => " ", 
    "\x82" => "'", 
    "\x83" => 'f', 
    "\x84" => '"', 
    "\x85" => "...", 
    "\x86" => "+", 
    "\x87" => "#", 
    "\x88" => "^", 
    "\x89" => "0/00", 
    "\x8A" => "S", 
    "\x8B" => "<", 
    "\x8C" => "OE", 
    "\x8D" => " ", 
    "\x8E" => "Z", 
    "\x8F" => " ", 
    "\x90" => " ", 
    "\x91" => "`", 
    "\x92" => "'", 
    "\x93" => '"', 
    "\x94" => '"', 
    "\x95" => "*", 
    "\x96" => "-", 
    "\x97" => "&mdash;", 
    "\x98" => "~", 
    "\x99" => "(TM)", 
    "\x9A" => "s", 
    "\x9B" => ">", 
    "\x9C" => "oe", 
    "\x9D" => " ", 
    "\x9E" => "z", 
    "\x9F" => "Y") 
); 
    return str_replace('iso-8859-1', 'utf-8', utf8_encode($contents)); 

} 

сейчас он прерван после iconv.internal_encoding, iconv.output_encoding устарел в PHP => 5.6 в php.net кто-то сказал, что я должен использовать ini_set ('default_charset', 'UTF-8'); но я не думаю, что это не сработало бы в этой функции Что делать, чтобы снова включить эту функцию?

ответ

0

Попробуйте это.

if (PHP_VERSION_ID < 50600) { 
    iconv_set_encoding('input_encoding', 'UTF-8'); 
    iconv_set_encoding('output_encoding', 'UTF-8'); 
    iconv_set_encoding('internal_encoding', 'UTF-8'); 
} else { 
    ini_set('default_charset', 'UTF-8'); 
} 

Благодаря