Перевод кодировки ISO-8859-1 в UTF-8 (PHP)
15 повідомлень
#14 років тому
Здравствуйте!Занимаюсь написанием парсера, который должен брать данные в кодировке ISO-8859-1 и записовать в БД в кодировке UTF-8
Пользуюсь стандартным iconv("ISO-8859-1", "UTF-8", $text); Проблема возникает на символах, код которых, как я понимаю, превышает допустимый лимит UTF-8 в 8 бит. (например € - знак евро или же — - длинное тире).
При попадании таких символов после перевода UTF-8 на месте этих символов ставит неизвесный ему (тот самый ненависный знак вопроса на чёрном фоне либо просто символ с нулевой шириной, будто бы и нету там ничего и нету - зависит от способа вывода на экран)
Я пробовал делать замену проблемных символов до перевода кодировки, но что-то не вышло...
Посоветуйте, как подружить эти две кодировки?
16382 повідомлення
58 повідомлень
#14 років тому
А если попробывать mb_string - в моей практике он оказался реально лучше iconv...
15 повідомлень
#14 років тому
shandy, пробовал $text= mb_convert_encoding($text, "UTF-8", "ISO-8859-1"
В данный момент юзаю ужасный и медленный костыль
function replace_utf_badchars ($string){
$len = strlen($string);
for($i = 0; $i < $len; $i++){
$c = ord($string);
// echo $c."<br>";
switch ($c) {
case 146:
$string = str_replace($string, "'",$string);
break;
case 145:
$string = str_replace($string, "'",$string);
break;
case 150:
$string = str_replace($string, "—",$string);
break;
case 128:
$string = str_replace($string, "€",$string);
break;
case 163:
$string = str_replace($string, "£",$string);
break;
}
}
return $string;
}