2014-02-08 4 views
0

В одном из моей таблицы базы данных я нашел некоторые испорченные слова, как:Как исправить испорченные закодированные слова с помощью PHP

Noël, japón, Świata

который я позже обнаружил, должно быть:

Noël, japón, świata

Кто-нибудь знает, как их преобразовать в нормальное состояние, используя PHP

+0

сделать вас знаете, почему они были повреждены? Может быть, из-за неправильной кодировки в таблице или это была вставка/обновление php? – malta

+0

Да @Micallef! Скорее всего, из-за передачи базы данных! Теперь сортировка в raw задана как «utf8_general_ci» Но теперь я просто хочу использовать данные в таблице и больше не буду вставлять их. Есть ли все равно, чтобы вернуть их к нормальной жизни? –

+0

вы можете использовать 'preg_replace', чтобы заменить символы, если они неизменно неверны. – malta

ответ

1

В качестве альтернативы вы можете проверить, если проблема связана с использованием кодировки символов iconv - Check the php manual

+1

У меня есть ошибка при импорте, не задал кодировку при импорте! 'mysql -u USERNAME -pPASSWORD --default_character_set utf8 DATABASE

1

К сожалению, это не может быть обратимо с помощью преобразования php. Я только что создал PHP-скрипт, который пробует все комбинации, более одного раза (до 5 раз), и ни один из них не дает «japón». Так что это невозможно.

сценарий:

<?php 
$encodings=mb_list_encodings(); 
foreach($encodings as $enc_to) { 
    foreach($encodings as $enc_from) { 
     $str="Noël, japón, Świata"; 
     for ($i=0;$i<5;$i++) { 
      $str=mb_convert_encoding($str,$enc_to,$enc_from); 
      echo "$enc_from -> $enc_to ($i): ".$str."\n"; 
      echo "$enc_from -> $enc_to ($i) + html_entity_decode: ".html_entity_decode($str)."\n"; 
      echo "$enc_from -> $enc_to ($i) + htmlspecialchars_decode: ".htmlspecialchars_decode($str)."\n"; 
      echo "$enc_from -> $enc_to ($i) + urldecode: ".urldecode($str)."\n"; 
      echo "$enc_from -> $enc_to ($i) + htmlentities: ".htmlentities($str)."\n"; 
      echo "$enc_from -> $enc_to ($i) + htmlspecialchars: ".htmlspecialchars($str)."\n"; 
      echo "$enc_from -> $enc_to ($i) + urlencode: ".urlencode($str)."\n"; 
     } 
    } 
} 

... нет выходного оглавлению уловов нет «ЯПОНИЯ»

+0

Или это закодировано дважды @Alex? Как ś сначала изменено на ś, а затем на ├à┬Ü –

+0

Я улучшил сценарий (смотри, он пытается кодировать и декодировать по-разному), и он все равно его не поймает. –

Смежные вопросы