phpMyAdmin
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> phpMyAdmin

MySQL xuất mã hóa phương Tây trong tệp PHP UTF-8

Sử dụng mysqli_set_charset để thay đổi mã hóa ứng dụng khách thành UTF-8 ngay sau khi bạn kết nối:

$mysqli->set_charset("utf8");

Mã hóa ứng dụng khách là những gì MySql mong đợi đầu vào của bạn ở trong (ví dụ:khi bạn chèn văn bản do người dùng cung cấp vào truy vấn tìm kiếm) và những gì nó cung cấp cho bạn kết quả (vì vậy nó phải khớp với mã hóa đầu ra của bạn để tạo ra echo để hiển thị mọi thứ một cách chính xác).

Bạn cần có nó khớp với mã hóa của trang web của bạn để giải thích cho hai trường hợp ở trên mã hóa của tệp nguồn PHP (để các phần được mã hóa cứng trong các truy vấn của bạn được diễn giải chính xác).

Cập nhật:Cách chuyển đổi dữ liệu được chèn bằng latin-1 thành utf-8

Đối với dữ liệu đã được chèn bằng cách sử dụng mã hóa kết nối sai, có một giải pháp thuận tiện để khắc phục sự cố. Đối với mỗi cột chứa loại dữ liệu này, bạn cần thực hiện:

ALTER TABLE table_name MODIFY column_name existing_column_type CHARACTER SET latin1;
ALTER TABLE table_name MODIFY column_name BLOB;
ALTER TABLE table_name MODIFY column_name existing_column_type CHARACTER SET utf8;

Phần giữ chỗ table_name , column_nameexisting_column_type nên được thay thế bằng các giá trị chính xác từ cơ sở dữ liệu của bạn mỗi lần.

Điều này có nghĩa là gì

  1. Cho MySql biết rằng nó cần lưu trữ dữ liệu trong cột đó bằng latin1. Bộ ký tự này chỉ chứa một tập hợp con nhỏ của utf8 nên nói chung việc chuyển đổi này liên quan đến việc mất dữ liệu, nhưng trong trường hợp cụ thể này, dữ liệu đã được hiểu là latin1 trên đầu vào nên sẽ không có tác dụng phụ. Tuy nhiên, MySql sẽ chuyển đổi nội bộ biểu diễn byte dữ liệu của bạn để khớp với những gì ban đầu được gửi từ PHP.
  2. Chuyển đổi cột thành kiểu nhị phân (BLOB ) không có thông tin mã hóa liên quan. Tại thời điểm này, cột sẽ chứa các byte thô là một chuỗi ký tự utf8 thích hợp.
  3. Chuyển đổi cột về kiểu ký tự trước đó của nó, cho MySql biết rằng các byte thô nên được coi là ở mã hóa utf8.

CẢNH BÁO:Bạn chỉ có thể sử dụng cách tiếp cận bừa bãi này nếu cột được đề cập chứa chỉ dữ liệu được chèn không chính xác. Bất kỳ dữ liệu nào đã được chèn chính xác sẽ bị cắt ngắn ở lần xuất hiện đầu tiên của bất kỳ ký tự không phải ASCII nào!

Do đó, bạn nên làm điều đó ngay bây giờ, trước khi bản sửa lỗi bên PHP có hiệu lực.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Cột ngày trong MySQL tự động điền với ngày hiện tại

  2. Tại sao tôi không thể truy cập phpmyadmin của Xampp trên localhost? Truy cập bị cấm.

  3. cách lấy tùy chọn đăng nhập cho phpmyadmin trong xampp

  4. Lỗi MySQL 2014 - Các lệnh không đồng bộ - khi cố gắng gọi các procs được lưu trữ liên tiếp

  5. phpMyAdmin Lỗi nghiêm trọng:Gọi đến hàm không xác định __ ()