Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để hiển thị các ký tự UTF-8 trong phpMyAdmin?

Thật không may, phpMyAdmin là một trong những ứng dụng php đầu tiên nói chuyện với MySQL về bộ ký tự một cách chính xác. Sự cố của bạn rất có thể là do cơ sở dữ liệu không lưu trữ các chuỗi UTF-8 chính xác ngay từ đầu.

Để hiển thị chính xác các ký tự một cách chính xác trong phpMyAdmin, dữ liệu phải được lưu trữ chính xác trong cơ sở dữ liệu. Tuy nhiên, việc chuyển đổi cơ sở dữ liệu thành bộ ký tự chính xác thường làm hỏng các ứng dụng web không nhận biết được tính năng liên quan đến bộ ký tự do MySQL cung cấp.

Cho tôi hỏi:có phải MySQL> phiên bản 4.1 không? Cơ sở dữ liệu dành cho ứng dụng web nào? phpBB? Cơ sở dữ liệu đã được di chuyển từ phiên bản ứng dụng web cũ hơn hay phiên bản MySQL cũ hơn?

Đề nghị của tôi là không anh em nếu ứng dụng web bạn đang sử dụng quá cũ và không được hỗ trợ. Chỉ chuyển đổi cơ sở dữ liệu thành UTF-8 thực nếu bạn chắc chắn rằng ứng dụng web có thể đọc chúng một cách chính xác.

Chỉnh sửa:

MySQL của bạn> 4.1, có nghĩa là nó nhận biết được bộ ký tự. Cài đặt đối chiếu bộ ký tự cho cơ sở dữ liệu của bạn là gì? Tôi khá chắc rằng bạn đang sử dụng latin1 , là tên MySQL cho ASCII, để lưu trữ văn bản UTF-8 trong 'byte', vào cơ sở dữ liệu.

Đối với máy khách không nhạy cảm với bộ ký tự (tức là mysql-cli và php-mod-mysql), các ký tự được hiển thị chính xác vì chúng đang được chuyển đến / từ cơ sở dữ liệu dưới dạng byte. Trong phpMyAdmin, các byte được đọc và hiển thị dưới dạng ký tự ASCII, bạn có vẻ như là văn bản rác.

Nhiều năm trước đây (2005?) Đã mất vô số giờ khi MySQL 4.0 trở nên lỗi thời, ở nhiều nơi ở Châu Á. Có một cách tiêu chuẩn để giải quyết vấn đề và dữ liệu ngớ ngẩn của bạn:

  1. Sao lưu cơ sở dữ liệu của bạn dưới dạng .sql
  2. Mở nó trong trình soạn thảo văn bản có hỗ trợ UTF-8, đảm bảo rằng chúng trông chính xác.
  3. Tìm kiếm charset collation latin1_general_ci , thay thế latin1 thành utf8 .
  4. Lưu dưới dạng tệp sql mới, không ghi đè lên bản sao lưu của bạn
  5. Nhập tệp mới, bây giờ chúng sẽ hiển thị chính xác trong phpMyAdmin và tiếng Nhật trên ứng dụng web của bạn sẽ trở thành dấu chấm hỏi. Đó là điều bình thường.
  6. Đối với ứng dụng web php của bạn dựa trên php-mod-mysql, hãy chèn mysql_query("SET NAMES UTF8"); sau mysql_connect() , bây giờ các dấu chấm hỏi sẽ không còn nữa.
  7. Thêm cấu hình sau my.ini cho mysql-cli:

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

Để biết thêm thông tin về bộ ký tự trên MySQL, vui lòng tham khảo hướng dẫn sử dụng: http://dev.mysql.com/doc/refman/5.0/en/charset-server.html

Lưu ý rằng tôi giả sử ứng dụng web của bạn đang sử dụng php-mod-mysql để kết nối với cơ sở dữ liệu (do đó, mysql_connect() chức năng), vì php-mod-mysql là tiện ích mở rộng duy nhất mà tôi có thể nghĩ về nó vẫn gây ra sự cố ĐẾN NGÀY NÀY.

phpMyAdmin sử dụng php-mod-mysqli để kết nối với MySQL. Tôi chưa bao giờ học cách sử dụng nó vì chuyển sang các khuôn khổ * để phát triển các dự án php của mình. Tôi đặc biệt khuyến khích bạn làm điều đó.

  • Nhiều khuôn khổ, ví dụ:CodeIgniter, Zend, sử dụng mysqli hoặc pdo để kết nối với cơ sở dữ liệu. các hàm mod-mysql được coi là lỗi thời gây ra vấn đề về khả năng mở rộng và hiệu suất. Ngoài ra, bạn không muốn ràng buộc dự án của mình với một loại cơ sở dữ liệu cụ thể.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuỗi truy vấn MySQL chứa

  2. Tại sao một cột văn bản không thể có giá trị mặc định trong MySQL?

  3. Làm cách nào để truyền DATETIME thành DATE trong mysql?

  4. Nâng cao tiêu chuẩn về quản lý MySQL, MariaDB, PostgreSQL &MongoDB

  5. Hàm MySQL DEGREES () - Chuyển đổi từ Radian sang Độ