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

Sự cố mã hóa ký tự với PHP Trình phân tích cú pháp DOM HTML đơn giản

@deceze và @Shakti cảm ơn sự giúp đỡ của bạn.

+1 cho liên kết bài viết được đăng bởi cheat ( Xử lý Unicode Front to Back trong Web App ) và nó cũng đáng đọc Hiểu mã hóa

Sau khi đọc bình luận của bạn, câu trả lời và tất nhiên hai bài báo đó, cuối cùng tôi đã giải quyết được vấn đề của mình.

Tôi đã liệt kê các bước tôi đã làm cho đến nay để giải quyết vấn đề này:

  1. Đã thêm tiêu đề header('Content-Type: text/html; charset=utf-8'); ở đầu tệp init.php của tôi,
  2. Đã thay đổi BỘ NHÂN VẬT của trường bảng cơ sở dữ liệu của tôi đang lưu trữ các giá trị đó thành UTF-8,
  3. Đặt bộ mã kết nối MySQL thành UTF-8 mysql_set_charset('utf8', $connection_link_id);
  4. Đã sử dụng hàm htmlentities () để chuyển đổi các ký tự $meta_title = htmlentities(trim($meta_title_raw), ENT_QUOTES, 'UTF-8');

Bây giờ vấn đề dường như đã được giải quyết, NHƯNG tôi vẫn phải làm điều sau để giải quyết vấn đề này một cách ĐẦY ĐỦ.

  1. Lấy bộ ký tự được mã hóa từ nguồn $source_charset .
  2. Thay đổi mã hóa của chuỗi thành UTF-8 nếu nó không có trong cùng một mã hóa. Đối với điều này, hàm PHP khả dụng duy nhất là iconv() . Ví dụ:iconv($source_charset, "UTF-8", $meta_title_raw);

Để nhận $source_charset Tôi có lẽ phải sử dụng một số thủ thuật hoặc kiểm tra nhiều lần. Như kiểm tra tiêu đề và thẻ meta, v.v. Tôi đã tìm thấy câu trả lời hay tại Phát hiện mã hóa

Hãy cho tôi biết nếu có bất kỳ cải tiến nào hoặc bất kỳ lỗi nào trong các bước của tôi ở trên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lưu trữ mảng numpy trong mysql

  2. quá trình mysql không thể bị dừng lại

  3. cách thay đổi định dạng dấu thời gian trong mysql

  4. Truy vấn cập nhật MySQL bằng cách sử dụng kết hợp bên trái

  5. Sửa đổi cột Vs thay đổi cột