0
votes

I used to have this nice little function to translate weird ISO-8895-15 characters to UTF-8 in a string so it wont break RSS/Atom feeds

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));

}

now it's broken after iconv.internal_encoding , iconv.output_encoding are deprecated in PHP => 5.6 in php.net someone said that I should use ini_set('default_charset', 'UTF-8'); but I don't think that would not work in this function What should I do to make this function work again

1

1 Answers

3
votes

Try this.

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');
}

Thanks