MySQL получает закодированные данные в базу данных

он у меня проблема

у меня есть дамп базы данных mysql, но все данные в кодировке URL имеют + вместо пробелов и других символов как% 20 и т. д.

я попытался импортировать это напрямую и написал php-скрипт для декодирования данных и перезаписи их обратно в БД,

/// make rs..........

........
do { 
    // decode the items in the countries table
    $myCountryID = $row_countries['id_con'];
    $new_country_con = urldecode($row_countries['country_con']);

    $result = mysql_query("UPDATE countries_con SET country_con = '".$new_country_con."'
    WHERE id_con = ".$myCountryID."")or die(mysql_error()) ;
    echo("id_win: ".$myCountryID."<br>added country_con: ".$new_country_con."<br>");

} while ($row_countries = mysql_fetch_assoc($countries)); 
echo('----------------------------------END Countries-------------------------------------<br><br>');

страница настроена на использование utf8, все таблицы в базе данных настроены на использование utf8

оператор эха выводит правильные символы, но он по-прежнему сохраняется в базе данных как строка с кодировкой urlencoded, как я могу получить ее в базе данных как utf8 без символов с кодировкой URL?????


person Dizzy Bryan High    schedule 06.06.2011    source источник
comment
SQL — это не строки! Не вставляйте значения непосредственно в операторы SQL, используйте заполнитель ? или функции mysql escape, как упоминал Фрэнк.   -  person Konerak    schedule 06.06.2011
comment
большое спасибо, само собой разумеется, что я чувствую себя немного глупо, как я мог пренебречь mysql_real_escape_string???? хотел бы также отметить вас как правильный ответ   -  person Dizzy Bryan High    schedule 06.06.2011


Ответы (1)


Попробуйте распечатать свой запрос, чтобы увидеть, в какой момент он выдает %20 (до выполнения запроса или после).

Также см.: http://recursive-design.com/blog/2008/06/23/force-mysql-encoding-to-utf8/

person Scherbius.com    schedule 06.06.2011