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

làm thế nào để đối phó với dấu và ký tự lạ trong cơ sở dữ liệu?

Đối chiếu chỉ ảnh hưởng đến việc sắp xếp văn bản, không ảnh hưởng đến tập ký tự thực tế của dữ liệu được lưu trữ.

Tôi muốn giới thiệu cấu hình này:

  1. Đặt bộ ký tự cho toàn bộ DB duy nhất, vì vậy bạn không phải đặt nó cho từng bảng riêng biệt. Tập ký tự được kế thừa từ DB thành bảng thành cột. Sử dụng utf8 như bộ ký tự.

  2. Đặt bộ ký tự cho kết nối DB . Thực thi các truy vấn này sau khi bạn kết nối với cơ sở dữ liệu:

    SET CHARACTER SET 'utf8'
    SET NAMES 'utf8'
    
  3. Đặt bộ ký tự cho trang , sử dụng tiêu đề HTTP và / hoặc thẻ meta HTML. Một trong số này là đủ. Sử dụng utf-8 dưới dạng charset .

Như vậy là đủ.

Nếu bạn muốn sắp xếp các chuỗi tiếng Tây Ban Nha thích hợp, hãy đặt đối chiếu cho toàn bộ cơ sở dữ liệu. utf8_spanish_ci sẽ hoạt động (ci có nghĩa là Không phân biệt chữ hoa chữ thường ). Nếu không có đối chiếu thích hợp, các ký tự tiếng Tây Ban Nha có dấu sẽ luôn được sắp xếp sau cùng.

Lưu ý :có thể bộ ký tự dữ liệu bạn đã có trong bảng bị hỏng do cấu hình bộ ký tự của bạn đã sai trước đó. Bạn nên kiểm tra nó bằng cách sử dụng một số ứng dụng khách DB trước để loại trừ trường hợp này. Nếu nó bị hỏng, chỉ cần chèn lại dữ liệu của bạn với cấu hình bộ ký tự phù hợp.

bộ ký tự như thế nào? làm việc trong cơ sở dữ liệu

  • đối tượng bộ ký tự thuộc tính này có thể được đặt rõ ràng hoặc được kế thừa (máy chủ> cơ sở dữ liệu> bảng> cột), vì vậy tùy chọn tốt nhất là đặt nó cho toàn bộ cơ sở dữ liệu

  • kết nối ứng dụng khách cũng có một bộ ký tự và nó cho cơ sở dữ liệu biết mã hóa mà bạn đang gửi dữ liệu

Nếu bộ ký tự của kết nối máy khách và bộ ký tự của đối tượng đích khác nhau, dữ liệu bạn đang gửi đến cơ sở dữ liệu sẽ tự động được chuyển đổi từ bộ ký tự của kết nối thành bộ ký tự của đối tượng.

Vì vậy, nếu bạn có ví dụ như dữ liệu trong utf8 , nhưng kết nối máy khách đặt thành latin1 , cơ sở dữ liệu sẽ phá vỡ dữ liệu, vì nó sẽ cố gắng chuyển đổi utf8 giống như nó latin1 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm trường DATE và TIME để nhận trường DATETIME trong MySQL

  2. sử dụng các trường ảo để tính tổng các giá trị trong cakephp

  3. Tìm các hàng có giá trị cột trùng lặp / tương tự MySQL

  4. Tìm phòng miễn phí (hệ thống đặt phòng)

  5. Làm cách nào để bạn chuyển đổi bảng cha-con (kề) thành một tập hợp lồng nhau bằng PHP và MySQL?