/** * Convert * to UTF-16 * @dataProvider toUTF16 */ public function test_convert_UTF16($input, $expected, $encoding) { $encoding = SimplePie_Misc::encoding($encoding); $this->assertEquals($expected, SimplePie_Misc::change_encoding($input, $encoding, 'UTF-16')); }
/** * Change a string from one encoding to another * * @param string $data Raw data in $input encoding * @param string $input Encoding of $data * @param string $output Encoding you want * @return string|boolean False if we can't convert it */ public static function change_encoding($data, $input, $output) { $input = SimplePie_Misc::encoding($input); $output = SimplePie_Misc::encoding($output); // We fail to fail on non US-ASCII bytes if ($input === 'US-ASCII') { static $non_ascii_octects = ''; if (!$non_ascii_octects) { for ($i = 0x80; $i <= 0xff; $i++) { $non_ascii_octects .= chr($i); } } $data = substr($data, 0, strcspn($data, $non_ascii_octects)); } // This is first, as behaviour of this is completely predictable if ($input === 'windows-1252' && $output === 'UTF-8') { return SimplePie_Misc::windows_1252_to_utf8($data); } elseif (function_exists('mb_convert_encoding') && ($return = SimplePie_Misc::change_encoding_mbstring($data, $input, $output))) { return $return; } elseif (function_exists('iconv') && ($return = SimplePie_Misc::change_encoding_iconv($data, $input, $output))) { return $return; } else { return false; } }
public static function change_encoding($data, $input, $output) { $input = SimplePie_Misc::encoding($input); $output = SimplePie_Misc::encoding($output); if ($input === 'US-ASCII') { static $non_ascii_octects = ''; if (!$non_ascii_octects) { for ($i = 0x80; $i <= 0xff; $i++) { $non_ascii_octects .= chr($i); } } $data = substr($data, 0, strcspn($data, $non_ascii_octects)); } if ($input === 'windows-1252' && $output === 'UTF-8') { return SimplePie_Misc::windows_1252_to_utf8($data); } elseif (function_exists('mb_convert_encoding') && ($return = SimplePie_Misc::change_encoding_mbstring($data, $input, $output))) { return $return; } elseif (function_exists('iconv') && ($return = SimplePie_Misc::change_encoding_iconv($data, $input, $output))) { return $return; } else { return false; } }
function change_encoding($data, $input, $output) { $input = SimplePie_Misc::encoding($input); $output = SimplePie_Misc::encoding($output); // We fail to fail on non US-ASCII bytes if ($input === 'US-ASCII') { static $non_ascii_octects = ''; if (!$non_ascii_octects) { for ($i = 0x80; $i <= 0xff; $i++) { $non_ascii_octects .= chr($i); } } $data = substr($data, 0, strcspn($data, $non_ascii_octects)); } if (function_exists('iconv') && ($return = @iconv($input, $output, $data))) { return $return; } elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input))) { return $return; } elseif ($input == 'windows-1252' && $output == 'UTF-8') { return SimplePie_Misc::windows_1252_to_utf8($data); } elseif ($input == 'UTF-8' && $output == 'windows-1252') { return utf8_decode($data); } return $data; }
function change_encoding($data, $input, $output) { $input = SimplePie_Misc::encoding($input); $output = SimplePie_Misc::encoding($output); // We fail to fail on non US-ASCII bytes if ($input === 'US-ASCII') { static $non_ascii_octects = ''; if (!$non_ascii_octects) { for ($i = 0x80; $i <= 0xFF; $i++) { $non_ascii_octects .= chr($i); } } $data = substr($data, 0, strcspn($data, $non_ascii_octects)); } // This is first, as behaviour of this is completely predictable if ($input === 'Windows-1252' && $output === 'UTF-8') { return SimplePie_Misc::windows_1252_to_utf8($data); } // This is second, as behaviour of this varies only with PHP version elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input))) { return $return; } // This is last, as behaviour of this varies with OS userland and PHP version elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data))) { return $return; } // If we can't do anything, just fail else { return false; } }
function change_encoding($data, $input, $output) { $input = SimplePie_Misc::encoding($input); $output = SimplePie_Misc::encoding($output); if ($input != $output) { if (function_exists('iconv') && $input['use_iconv'] && $output['use_iconv'] && iconv($input['encoding'], "{$output['encoding']}//TRANSLIT", $data)) { return iconv($input['encoding'], "{$output['encoding']}//TRANSLIT", $data); } else { if (function_exists('iconv') && $input['use_iconv'] && $output['use_iconv'] && iconv($input['encoding'], $output['encoding'], $data)) { return iconv($input['encoding'], $output['encoding'], $data); } else { if (function_exists('mb_convert_encoding') && $input['use_mbstring'] && $output['use_mbstring']) { return mb_convert_encoding($data, $output['encoding'], $input['encoding']); } else { if ($input['encoding'] == 'ISO-8859-1' && $output['encoding'] == 'UTF-8') { return utf8_encode($data); } else { if ($input['encoding'] == 'UTF-8' && $output['encoding'] == 'ISO-8859-1') { return utf8_decode($data); } } } } } } return $data; }
function change_encoding($data, $input, $output) { $input = SimplePie_Misc::encoding($input); $output = SimplePie_Misc::encoding($output); if (function_exists('iconv') && ($return = @iconv($input, "{$output}//IGNORE", $data))) { return $return; } elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data))) { return $return; } elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input))) { return $return; } elseif ($input == 'ISO-8859-1' && $output == 'UTF-8') { return utf8_encode($data); } elseif ($input == 'UTF-8' && $output == 'ISO-8859-1') { return utf8_decode($data); } return $data; }