Hệ quản trị cơ sở dữ liệu Mysql, bắt đầu từ phiên bản 4.1, hỗ trợ làm việc với các bảng mã. Các vấn đề chính với chúng phát sinh khi kết nối cơ sở dữ liệu với Php. Trong trường hợp này, mã hóa nội dung của cơ sở và kết nối phải khớp.
Hướng dẫn
Bước 1
Lưu ý rằng nguyên nhân phổ biến của sự cố với Mysql là mã hóa mặc định cho cơ sở dữ liệu được đặt thành latin1. Hầu hết các máy khách được kết nối cũng được định cấu hình cho nó, bạn nhập dữ liệu và xem kết quả bằng cách sử dụng nó. Mặc dù bảng mã này hiển thị chính xác bảng chữ cái Cyrillic, các mã của bảng ký hiệu trong đó không tương ứng với các ký tự Cyrillic thực. Do đó, việc tìm kiếm và sắp xếp dữ liệu có thể tạo ra những kết quả hoàn toàn không thể đoán trước được.
Bước 2
Thay đổi mã hóa cơ sở dữ liệu thành một mã hiển thị chính xác các ký tự Kirin, ví dụ: utf-8 hoặc cp1251. Để thực hiện việc này, hãy chuyển đổi dữ liệu từ mã hóa Latin1 sang cp1251. Không sử dụng chuyển đổi dữ liệu đơn giản, vì mã ký tự không chính xác. Do đó, bạn cần phải loại bỏ ràng buộc mã hóa của chúng. Để thực hiện việc này, hãy chuyển đổi dữ liệu và kiểu ký tự sang dữ liệu nhị phân. Sử dụng truy vấn Thay đổi bảng "Nhập tên bảng" t1 thay đổi c1 c1 blob.
Bước 3
Chạy truy vấn để thay đổi mã hóa của cơ sở dữ liệu Mysql, đối với việc này, hãy sử dụng ví dụ sau: Alter table "Nhập tên bảng" t1 change c1 c1 text chatacter set "Nhập tên của mã hóa mong muốn, ví dụ: cp1251". Không một byte dữ liệu nào bị thay đổi về mặt vật lý, nhưng quy tắc hình thành các ký tự sẽ thay đổi. Sau đó, để thay đổi mã hóa cơ sở dữ liệu, bạn có thể sử dụng một truy vấn chuyển đổi dữ liệu đơn giản.
Bước 4
Xin lưu ý rằng khi thay đổi mã hóa bảng trong một trường có chứa chỉ mục, bạn phải xóa chúng và tạo lại chúng, tức là xây dựng lại trong tất cả các bảng cơ sở dữ liệu. Khi chuyển sang mã hóa, hãy đảm bảo rằng các ứng dụng khách trực quan hỗ trợ unicode. Ví dụ: máy khách SQLyog hiển thị không chính xác nội dung của bảng lưu trữ dữ liệu ở dạng mã hóa utf-8.