PHP

Hướng Dẫn Sử Dụng UTF-8 trong PHP và MySQL

UTF-8 là bộ ký tự được sử dụng phổ biến hiện nay vì nó hỗ trợ các ký tự có trong nhiều ngôn ngữ (giao tiếp) khác nhau. Bài viết này sẽ hướng dẫn các bạn cách thiết lập PHP, MySQL và văn bản HTML (XML) sao cho các ký tự UTF-8 có thể hiển thị được một cách chính xác trên client (thường là trình duyệt).

Làm viêc với UTF-8 trong MySQL và PHP

Thiết Lập Character Set trong PHP

Trong file cấu hình php.ini của PHP, bạn cần đảm bảo rằng các ký tự trong UTF-8 được hỗ trợ. Để làm điều này bạn tìm tới dòng thiết lập cho trường default_charset và cập nhật như sau (nếu như có khác biệt, còn nếu giống thì bạn có thể bỏ qua):

default_charset = "utf-8";

Trường hợp bạn cần thay đổi giá trị cho trường để giống với ở trên thì đừng quên khởi động lại web server.

Sử Dụng charset=utf8 trong HTTP Response Header

Tiếp theo bạn cần thiết lập charset=utf8 trong HTTP response header trả về cho client. Điều này giúp client biết rằng kết quả trả về sẽ chứa các ký tự UTF-8.

Đoạn code PHP giúp thực hiện công việc gán giá trị cho HTTP response header này như sau:

header(\'Content-Type: text/html; charset=utf-8\');

Bạn có thể sử dụng công cụ developer console của trình duyệt để kiểm tra lại trường này trong HTTP response header trả về cho request.

Thiết Lập Character Set Trong HTML/XML

Trong mã HTML (hoặc XML) chúng ta cũng cần lưu ý thiết lập bộ ký tự character set sử dụng là UTF-8. Điều này giúp trình duyệt (hoặc các user-agent khác như search engine) biết rằng văn bản HTML (hoặc XML) nhận được sử dụng bộ ký tự nào.

Với HTML bạn sử dụng thẻ meta để tạo thiết lập cho bộ ký tự như sau:

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Với văn bản XML thì chúng ta thực hiện việc thiết lập này trong dòng đầu tiên:

<?xml version="1.0" encoding="UTF-8"?>

Thiết Lập MySQL

Một bước cuối cùng chúng ta cần làm đó là thiết lập bộ ký tự sử dụng trong MySQL là UTF-8. Để làm điều này mở tập tin cấu hình MySQL my.init và cập nhật các thiết lập giống như dưới đây:

[client]
default-character-set=UTF-8
    
[mysql]
default-character-set=UTF-8
    
[mysqld]
character-set-client-handshake = false #force encoding to uft8
character-set-server=UTF-8
collation-server=UTF-8_general_ci
    
[mysqld_safe]
default-character-set=UTF-8

Sau đó khởi động lại MySQL server.

Để kiểm tra lại các thiết lập phía trên bạn có thể sử dụng MySQL client để kết nối tới MySQL server và chạy câu lệnh:

> show variables like \'char%\';

Trường hợp bạn đã tạo một database trên server không sử dụng bộ ký tự utf-8 trước đó thì bạn cần chuyển đổi về utf-8 sử dụng câu lệnh sau:

> ALTER SCHEMA `database_name` DEFAULT CHARACTER SET UTF-8;

Để kiểm tra xem bộ ký tự nào đang được sử dụng trong một database cho trước bạn chạy 2 câu lệnh sau:

> USE database_name;
> show variables like "character_set_database";

Hoặc:

> SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "database_name";
Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration