Đặt bộ ký tự utf8 MySQL PHP

Như tôi đã đăng trước đây trên trang web này, tôi tin rằng nên chuẩn hóa mã hóa một ký tự trên tất cả các phần của hệ thống và vì mã hóa ký tự ưa thích của tôi là UTF-8, khi tôi tạo một hệ thống PHP, tôi kiểm tra những điều sau

  • Rằng trình duyệt nhận và diễn giải đầu ra của các tập lệnh PHP của tôi dưới dạng UTF-8
  • Biểu mẫu [X]HTML chấp nhận UTF-8
  • PHP đó coi dữ liệu nhận được từ cơ sở dữ liệu MySQL là UTF-8

Tất nhiên, chúng tôi cũng cần đặt trình chỉnh sửa của mình thành mã hóa ký tự mong muốn và khi chúng tôi tạo các bảng MySQL, hãy chọn UTF-8 làm mã hóa ký tự [Tôi sẽ đăng một bài về các mã hóa ký tự khác nhau và về các đối chiếu trong tương lai]

Làm cho trình duyệt hiểu tài liệu của chúng tôi là UTF-8

Không phải lúc nào chúng tôi cũng tính đến khả năng sửa đổi php.ini trong máy chủ của mình, nhưng hãy nói rằng chúng tôi làm được, trong trường hợp này, chúng tôi có thể đặt mã hóa ký tự mặc định cho các tập lệnh PHP của mình bằng cách thay đổi

default_charset = "utf-8"

Tuy nhiên, nếu điều này không khả dụng, chúng tôi có thể chỉ định mã hóa ký tự mà tệp đang được phục vụ gửi tiêu đề ở đầu tập lệnh của chúng tôi

Mặc dù điều này có thể dư thừa để thực hiện, chúng tôi có thể chỉ định mã hóa trong thẻ meta bên trong tài liệu HTML [X] kết quả của chúng tôi

Làm cho trình duyệt chấp nhận UTF-8 trong biểu mẫu

Vì chúng tôi đang xử lý mọi thứ dưới dạng UTF-8, nên chúng tôi có thể đảm bảo rằng các biểu mẫu cũng chấp nhận mã hóa ký tự này bằng cách thêm thuộc tính accept-charset vào thẻ biểu mẫu

Xử lý dữ liệu chúng tôi thu được từ cơ sở dữ liệu MySQL dưới dạng UTF-8

Chúng tôi phải đảm bảo rằng thông tin mà chúng tôi nhận được từ cơ sở dữ liệu đang được xử lý dưới dạng UTF-8 bởi các tập lệnh PHP của chúng tôi, để làm điều này, chúng tôi có thể sử dụng các chức năng

bool mysqli_set_charset [ mysqli $link , string $charset ]
0 hoặc
bool mysqli_set_charset [ mysqli $link , string $charset ]
1

bool mysqli_set_charset [ mysqli $link , string $charset ]
2

Bây giờ mọi thứ sẽ được hiển thị và hoạt động chính xác trong tập lệnh PHP của chúng tôi

UTF-8 trong tệp văn bản thuần túy và tệp html

Giả sử rằng chúng tôi có quyền truy cập vào tệp cấu hình của Apache,

bool mysqli_set_charset [ mysqli $link , string $charset ]
3 [nó có thể nằm trong default_charset = "utf-8"0 hoặc trong default_charset = "utf-8"1], chúng tôi có thể thêm phần sau vào tệp này

default_charset = "utf-8"2

Nhưng nếu chúng tôi không thể sửa đổi

bool mysqli_set_charset [ mysqli $link , string $charset ]
3, chúng tôi vẫn có thể làm điều đó bằng cách thêm điều tương tự vào tệp default_charset = "utf-8"4 của chúng tôi

Tất nhiên, chúng tôi có thể thêm thẻ meta vào các tệp HTML của mình như đã mô tả trước đây, nhưng đây là cách để đảm bảo rằng các tệp văn bản thuần túy của chúng tôi được gửi dưới dạng UTF-8

Hàm mysqli_set_charset[] / mysqli. set_charset chỉ định bộ ký tự mặc định sẽ được sử dụng khi gửi dữ liệu từ và đến máy chủ cơ sở dữ liệu

Ghi chú. Để chức năng này hoạt động trên nền tảng Windows, bạn cần có thư viện máy khách MySQL 4. 1. 11 trở lên [đối với MySQL 5. 0 bạn cần 5. 0. 6 trở lên]

cú pháp

Phong cách hướng đối tượng

bool mysqli::set_charset [ string $charset ]

phong cách thủ tục

bool mysqli_set_charset [ mysqli $link , string $charset ]

Tham số

TênMô tảBắt buộc/Kết nối tùy chọnChỉ định kết nối MySQL để sử dụngBộ ký tự yêu cầuChỉ định bộ ký tự mặc địnhBắt buộc

Bài viết này mô tả cách chỉ định bộ ký tự khi bạn kết nối với cơ sở dữ liệu MySQL bằng một trong các phương pháp sau

  • Phần mở rộng PHP được cải thiện [mysqli] của MySQL
  • PDO [Đối tượng dữ liệu PHP]

Bài viết này giả định rằng bạn đã biết cách kết nối với cơ sở dữ liệu MySQL bằng PHP. Để biết thông tin về cách thực hiện việc này, vui lòng xem bài viết này

Xác định bộ ký tự nào có sẵn trên máy chủ

Để xác định bộ ký tự nào có sẵn trên máy chủ của bạn cho MySQL, hãy đăng nhập vào tài khoản của bạn bằng SSH, rồi nhập lệnh sau

grep "charset name" /usr/share/mysql/charsets/Index.xml | awk -F \" '{print $2}'

Lệnh này hiển thị danh sách các giá trị khả dụng mà bạn có thể sử dụng trong các phương thức được mô tả bên dưới

Để xem thông tin bổ sung về một bộ ký tự, chẳng hạn như mô tả chi tiết của nó, hãy mở /usr/share/mysql/charsets/Index. xml trong trình soạn thảo văn bản

Đặt bộ ký tự bằng tiện ích mở rộng MySQL Cải tiến

Nếu bạn đang sử dụng tiện ích mở rộng MySQL Cải tiến [mysqli], hãy sử dụng phương thức set_charset để chỉ định bộ ký tự. Ví dụ: mã mẫu sau minh họa cách chỉ định bộ ký tự tiếng Ả Rập của Windows bằng mysqli

$mysqli = new mysqli["localhost", "dbuser", "password", "database"];

$mysqli->set_charset["cp1256"];

Đặt bộ ký tự bằng PDO [Đối tượng dữ liệu PHP]

Để chỉ định bộ ký tự bằng PDO, tất cả những gì bạn phải làm là bao gồm cài đặt bộ ký tự trong chuỗi kết nối. Ví dụ: mã mẫu sau minh họa cách chỉ định bộ ký tự Unicode UTF-8 bằng PDO

Cách đặt UTF

mysql_query["SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn];

Làm cách nào để đặt bộ ký tự thành utf8 trong PHP?

PHP UTF-8 Encoding – sửa đổi php của bạn. Điều đầu tiên bạn cần làm là sửa đổi php của bạn. ini để sử dụng UTF-8 làm bộ ký tự mặc định. default_charset = "utf-8"; [Lưu ý. Sau đó, bạn có thể sử dụng phpinfo[] để xác minh rằng điều này đã được đặt đúng cách. ]

Làm cách nào để đặt bộ ký tự trong MySQL PHP?

Hàm mysqli set_charset[] trong PHP . ". $mysqli -> character_set_name[]; $mysqli -> set_charset["utf8"]; echo "Current character set is: " . $mysqli -> character_set_name[]; $mysqli -> close[];

Làm cách nào để đặt bộ ký tự utf8 trong MySQL?

Để thay đổi mã hóa bộ ký tự thành UTF-8 cho chính cơ sở dữ liệu, hãy nhập lệnh sau tại dấu nhắc mysql>. Thay dbname bằng tên cơ sở dữ liệu. Sao chép ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_General_ci ; .

Chủ Đề