Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да показвам UTF-8 символи в phpMyAdmin?

За съжаление, phpMyAdmin е едно от първите php приложения, които говорят с MySQL за набор от знаци правилно. Проблемът ви най-вероятно се дължи на факта, че базата данни не съхранява правилните низове UTF-8 на първо място.

За да се показват правилно символите в phpMyAdmin, данните трябва да се съхраняват правилно в базата данни. Въпреки това, преобразуването на базата данни в правилен набор от знаци често нарушава уеб приложения, които не са запознати с функцията, свързана с набор от знаци, предоставена от MySQL.

Мога ли да попитам:MySQL> версия 4.1? За какво уеб приложение е базата данни? phpBB? Базата данни беше мигрирана от по-стара версия на уеб приложението или от по-стара версия на MySQL?

Моето предложение е да не брат, ако уеб приложението, което използвате, е твърде старо и не се поддържа. Преобразувайте базата данни в истински UTF-8 само ако сте сигурни, че уеб приложението може да ги прочете правилно.

Редактиране:

Вашият MySQL е> 4.1, което означава, че знае набор от знаци. Какви са настройките за сортиране на набор от знаци за вашата база данни? Почти съм сигурен, че използвате latin1 , което е MySQL име за ASCII, за съхраняване на UTF-8 текст в „байтове“ в базата данни.

За клиенти, които не са чувствителни към знаци (т.е. mysql-cli и php-mod-mysql), символите се показват правилно, тъй като се прехвърлят към/от базата данни като байтове. В phpMyAdmin байтовете се четат и показват като ASCII символи, това е текстът за боклук, който изглежда.

Бяха прекарани безброй часове преди години (2005?), когато MySQL 4.0 стана остарял в много части на Азия. Има стандартен начин да се справите с проблема си и погълнатите данни:

  1. Архивирайте вашата база данни като .sql
  2. Отворете го в текстов редактор с възможност за UTF-8, уверете се, че изглеждат правилно.
  3. Потърсете charset collation latin1_general_ci , заменете latin1 към utf8 .
  4. Запазете като нов sql файл, не презаписвайте резервното си копие
  5. Импортирайте новия файл, те вече ще изглеждат правилно в phpMyAdmin, а японският във вашето уеб приложение ще стане въпросителни. Това е нормално.
  6. За вашето php уеб приложение, което разчита на php-mod-mysql, вмъкнете mysql_query("SET NAMES UTF8"); след mysql_connect() , сега въпросите ще изчезнат.
  7. Добавете следната конфигурация my.ini за mysql-cli:

    # CLIENT SECTION
    [mysql]
    default-character-set=utf8
    # SERVER SECTION
    [mysqld]
    default-character-set=utf8
    

За повече информация относно набора от знаци в MySQL, моля, вижте ръководството: http://dev.mysql.com/doc/refman/5.0/en/charset-server.html

Имайте предвид, че предполагам, че вашето уеб приложение използва php-mod-mysql за свързване към базата данни (оттук mysql_connect() функция), тъй като php-mod-mysql е единственото разширение, за което се сещам, което все още предизвиква проблема И ДЕН ДЕН.

phpMyAdmin използва php-mod-mysqli за свързване с MySQL. Никога не се научих как да го използвам, защото преминах към рамки*, за да разработя моите php проекти. Силно ви насърчавам да направите това.

  • Много рамки, напр. CodeIgniter, Zend, използвайте mysqli или pdo за свързване към бази данни. Функциите на mod-mysql се считат за остарели причина за проблеми с производителността и мащабируемостта. Освен това не искате да обвързвате проекта си с конкретен тип база данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL LIMIT клауза еквивалентна за SQL SERVER

  2. Изберете най-често срещаната стойност от поле в MySQL

  3. При игнориране на дублиран ключ?

  4. ГРЕШКА 1067 (42000):Невалидна стойност по подразбиране за 'created_at'

  5. Индексът за решаване за потребител на таблица е повреден; опитайте се да го поправите