2013-11-14 4 views
0

У меня проблема (знак) UTF8. Это то, что происходит:UTF8 Кодирование - проблемы со старой базой данных и черными бриллиантами

  • База данных старше 6 или 7 лет. Я возвращаю сайт к жизни, но мне не повезло с кодировкой UTF8. Редактирование EDIT: после того, как я получил еще один удар, мне удалось сделать больше всего персонажей, например Grüßgott теперь работает. Тем не менее, я все еще получаю черные бриллианты на фигурных одиночных и двойных кавычках.

  • Я сделал кучу поиска stackoverflow и попробовал много чего.

  • Локальная база данных разработчиков, над которой я работаю, настраивается с UTF8 и utf8_general_ci. Я вручную преобразовал каждую таблицу из latin1_general_ci_as в utf8_general_ci и изменил диаграмму на UTF8. Некоторые из них не работали с запросом, поэтому я вручную перешел к дизайну таблицы, а затем, похоже, это исправить. Я понимаю, что некоторые таблицы COLUMNS могут (и на мой взгляд) установлены на latin1_general_ci_as, но я делаю тестовый пример с 1 конкретным фрагментом кода и что (блог) определенно UTF8.

  • Соединение с базой данных настроена следующим образом:

    $connection = mysql_connect($DB_SERVER, $DB_USER, $DB_PASS); 
    mysql_query("SET character_set_results=utf8", $connection); 
    mb_language('uni'); 
    mb_internal_encoding('UTF-8'); 
    mysql_select_db($DB_NAME, $connection); 
    mysql_query("SET names 'utf8'",$connection); 
    
  • Сайт Procedual PHP. В файле functions.php он выбирает данные из базы данных, как показано ниже. Единственная причина, по которой я показываю это, в моих чтениях, я видел, как некоторые люди говорили, что вам нужно что-то устанавливать каждый раз, но я действительно надеюсь, что вам не нужно объявлять что-то каждый раз, когда вы хотите что-то извлечь из базы данных ,

    query("SELECT * FROM table_name WHERE data='$something[unique]'"); 
    
  • Сайт HTML5, и у меня это есть в header.php. Насколько я могу судить, все в порядке.

    <? 
    header('Content-Type: text/html; charset=utf-8'); 
    ?> 
    <!DOCTYPE html> 
    <html> 
    <head> 
        <meta charset="utf-8"> 
    

Итак, вот где я. Я бы очень хотел решить проблему раз и навсегда и не беспокоиться об этом снова. Любая помощь или идеи приветствуются.

+0

Если у вас есть столбцы, которые 'latin1_general_ci_as' тогда я бы ожидать, что они должны быть преобразованы в базу данных уровень тоже. – halfer

+1

Почему вы используете функции 'mysql_ *' и 'mysqli_'? Вы не можете их смешивать! Первые также устарели и будут удалены в ближайшем будущем! – ComFreek

+1

1) Вы следили за всем здесь: http://stackoverflow.com/questions/279170/utf-8-all-the-way-through? 2) Вы все понимаете здесь: [Обращение с Unicode Front To Back в веб-приложении] (http://kunststube.net/frontback/)? 3) Правильно ли данные отображаются в базе данных с помощью инструмента администрирования, который получает право кодирования (надеюсь)? – deceze

ответ

0

Вы можете попробовать туздЫшпр конвертировать из ISO-8859-1 в UTF-8:

mysqldump --user=username --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql 
chgrep latin1 utf8 dump.sql (or when you have. sed -i "" 's/latin1/utf8/g' dump.sql) 
mysql --user=username --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;" 
mysql --user=username --password=password --default-character-set=utf8 dbname < dump.sql 
Смежные вопросы