2015-12-17 6 views
-1

Обновлен Вопрос:текст блоба после резервного копирования и восстановления

У меня был один старый скрипт с mysql 5.5.46. Я сохранял свой текст в одном столбце с типом blob. мой текст был персидским: سلام خوبی جه خبر. после того, как я изменил колонку blob в столбце longblob с phpmyadmin с gui (без какого-либо преобразования запроса). все работает правильно, но я получаю резервную копию из моего mysql и восстанавливаю эту db через 2 года. теперь он не показывает мои персидские персонажи правильно. Английский текст в порядке, но персидский текст идет примерно так же, как гекс, упомянутый в моем вопросе. мне нужен текст хранится в page_about и page_contact столбцов в этой таблице: Создание таблицы:

mysql_query("CREATE TABLE `".$prefix."ProFolio_info` (
         `id` int(5) NOT NULL auto_increment, 
         `page_about` blob NOT NULL, 
         `page_contact` blob NOT NULL, 
         PRIMARY KEY (`id`) 
        ) TYPE=MyISAM AUTO_INCREMENT=1") or die(mysql_error()); 

Обновление данных:

$info_query = mysql_query("SELECT * FROM ".$prefix."ProFolio_info ORDER BY id DESC LIMIT 0,10"); 

    while($info_row = mysql_fetch_array($info_query)){ 
     $about_page = html_entity_decode($info_row['page_about']); 
     $contact_page = html_entity_decode($info_row['page_contact']); 

    if(isset($_POST['change_settings']) && $LOGGEDIN == 'yes'){ 

    $new_aboutpage = clean_page($_POST['about_page']); 
    $new_contactpage = clean_page($_POST['contact_page']); 


    if($about_page != $new_aboutpage){ 
     mysql_query("UPDATE ".$prefix."ProFolio_info SET page_about = '$new_aboutpage' WHERE id = '$info_id'"); 
    } 
    if($contact_page != $new_contactpage){ 
     mysql_query("UPDATE ".$prefix."ProFolio_info SET page_contact = '$new_contactpage' WHERE id = '$info_id'"); 
    } 

получить тексты из БД:

<textarea name="contact_page"><? echo str_replace('<br />', '', $contact_page); ?></textarea> 
</div> 

я тестировал некоторые запрос, например, преобразование, преобразование и преобразование столбца в longtest, но результат тот же, и у меня неправильные делители.

Я думаю, что он хранил с latin1 обобщению, но я выбираю столбец с UTF-8

HEX

BC28620264F736C6173683B26756D6C3B264F736C6173683B26736563743B265567726176653BC284264F736C6173683B26736563743B20265561637574653B266D6163723B265567726176653BC281264F736C6173683B266F7264663B265567726176653BC28520264F736C6173683B26736563743B2655636972633BC28C265567726176653BC286264F736C6173683B266E6F743B264F736C6173683B26736563743B20265567726176653BC286265567726176653BC2852655636972633BC28C265561637574653B266D6163723B265567726176653BC286264F736C6173683B266E6F743B265567726176653BC28720264F736C6173683B26736563743B265567726176653BC285264F736C6173683B26736563743B20265567726176653BC285264F736C6173683B26737570333B265567726176653BC286265561637574653B26636F70793B265567726176653BC28720265561637574653B266D6163723B265567726176653B 

я загрузил свой сценарий in github также загрузил скрипт в моем сервере и отправки текста из сценария но данные, поступающие в db правильно! Я думаю, что это просто из-за моей резервной копии базы данных. вы можете проверить мой готовый скрипт от here и просмотреть текст моего текста из меню kave note;

+0

Сфера применения этого вопроса постоянно меняется при каждом редактировании, и неясно, о чем вы спрашиваете. Попробуйте разбить проблему на мелкие куски, например, восстановить старую базу данных –

ответ

-2

У меня тоже такая же проблема, основная причина в том, что в Windows используется различная кодировка символов для разных символов. Я нашел пакет convert character set. Он решил мою проблему, и она тоже может решить вашу проблему.

+0

Это не имеет смысла. Наборы символов == кодировки. То есть iso-8895-1 в Windows - это то же самое, что и в Linux. –

1

Есть 4 места "говорят" utf8:

  1. Данные клиента должны быть utf8 кодировке. (Возможно, это было.)
  2. SET NAMES utf8 или его эквивалент. (Вы позаботились об этом в new PDO.)
  3. CHARACTER SET utf8 на объявление таблицы или столбца. Пожалуйста, предоставьте `SHOW CREATE TABLE, но не пытайтесь его исправить, если он говорит latin1.
  4. На странице HTML, <meta ... charset=UTF-8 ...>

Просьба SELECT col, HEX(col) FROM tbl WHERE ..., чтобы мы могли видеть, были ли данные перепутались в таблице. Есть два возможных исправления для данных; нам нужно увидеть шестую информацию о том, какое исправление применить.

+0

Я добавляю новые детали в свой вопрос, спасибо – kaveh

+0

Это шествие представляет 'arefeh: 23 esfande 90: manam injam, sal ..'и имеет htmlentities, такие как' § 'generate' §'. Но ничего, что не-ascii. Следовательно, все это верно и utf8. Мне нужно увидеть шестерку для строки с 'سلام این' или someting else, которая будет« неправильной ». –

+0

Я добавляю новый Hex с неправильными символами. – kaveh

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