Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wyświetlić znaki UTF-8 w phpMyAdmin?

Niestety, phpMyAdmin jest jedną z pierwszych aplikacji php, które poprawnie komunikują się z MySQL o zestawach znaków. Twój problem jest najprawdopodobniej spowodowany faktem, że baza danych nie przechowuje poprawnych ciągów znaków UTF-8 na pierwszym miejscu.

Aby poprawnie wyświetlać znaki w phpMyAdmin, dane muszą być poprawnie przechowywane w bazie danych. Jednak przekonwertowanie bazy danych na poprawny zestaw znaków często psuje aplikacje internetowe, które nie są świadome funkcji związanych z zestawami znaków dostarczanych przez MySQL.

Czy mogę zapytać:czy MySQL> wersja 4.1? Do jakiej aplikacji internetowej służy baza danych? phpBB? Czy baza danych została przeniesiona ze starszej wersji aplikacji internetowej czy ze starszej wersji MySQL?

Moja sugestia nie dotyczy brata, jeśli aplikacja internetowa, której używasz, jest zbyt stara i nie jest obsługiwana. Konwertuj bazę danych do prawdziwego UTF-8 tylko wtedy, gdy masz pewność, że aplikacja internetowa może je poprawnie odczytać.

Edytuj:

Twój MySQL jest> 4.1, co oznacza, że ​​obsługuje kodowanie. Jakie są ustawienia sortowania zestawów znaków dla twojej bazy danych? Jestem prawie pewien, że używasz latin1 , która jest nazwą MySQL dla ASCII, do przechowywania tekstu UTF-8 w 'bajtach' w bazie danych.

W przypadku klientów niewrażliwych na zestawy znaków (tj. mysql-cli i php-mod-mysql) znaki są wyświetlane poprawnie, ponieważ są przesyłane do/z bazy danych jako bajty. W phpMyAdmin bajty są odczytywane i wyświetlane jako znaki ASCII, tak wygląda tekst śmieci.

Wiele lat temu (2005?) spędziliśmy niezliczone godziny, kiedy MySQL 4.0 stał się przestarzały w wielu częściach Azji. Istnieje standardowy sposób radzenia sobie z problemem i pochłoniętymi danymi:

  1. Utwórz kopię zapasową bazy danych jako .sql
  2. Otwórz go w edytorze tekstu obsługującym UTF-8, upewnij się, że wyglądają poprawnie.
  3. Poszukaj charset collation latin1_general_ci , zastąp latin1 do utf8 .
  4. Zapisz jako nowy plik sql, nie nadpisuj kopii zapasowej
  5. Zaimportuj nowy plik, będą teraz wyglądać poprawnie w phpMyAdmin, a japoński w Twojej aplikacji internetowej stanie się znakami zapytania. To normalne.
  6. Dla Twojej aplikacji internetowej php, która opiera się na php-mod-mysql, wstaw mysql_query("SET NAMES UTF8"); po mysql_connect() , teraz znaki zapytania znikną.
  7. Dodaj następującą konfigurację my.ini dla mysql-cli:

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

Więcej informacji na temat zestawu znaków w MySQL można znaleźć w podręczniku: http://dev.mysql.com/doc/refman/5.0/en/charset-server.html

Zauważ, że zakładam, że Twoja aplikacja internetowa używa php-mod-mysql do łączenia się z bazą danych (stąd mysql_connect() funkcja), ponieważ php-mod-mysql jest jedynym rozszerzeniem, o którym myślę, że nadal powoduje problem DO DZIŚ.

phpMyAdmin używa php-mod-mysqli do łączenia się z MySQL. Nigdy nie nauczyłem się go używać, ponieważ przestawiam się na frameworki*, aby rozwijać moje projekty php. Gorąco zachęcam, abyś to zrobił.

  • Wiele frameworków, m.in. CodeIgniter, Zend, użyj mysqli lub pdo do łączenia się z bazami danych. Funkcje mod-mysql są uważane za przestarzałe, ponieważ powodują problemy z wydajnością i skalowalnością. Ponadto nie chcesz wiązać swojego projektu z konkretnym typem bazy danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przyczyny błędu MySQL 2014 Nie można wykonać zapytań, gdy inne niebuforowane zapytania są aktywne

  2. Składnia MySQL dla Dołącz do aktualizacji

  3. Grupuj według klauzuli w mySQL i postgreSQL, skąd błąd w postgreSQL?

  4. Jak pokazać sortowanie połączenia w MySQL?

  5. MySQL Cast jako Boolean