Review Hướng dẫn dùng types characters trong PHP ✅

Mẹo Hướng dẫn Hướng dẫn dùng types characters trong PHP Mới Nhất

Bùi Trung Huấn đang tìm kiếm từ khóa Hướng dẫn dùng types characters trong PHP được Cập Nhật vào lúc : 2022-09-25 03:12:22 . Với phương châm chia sẻ Bí quyết Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi đọc Post vẫn ko hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Ad lý giải và hướng dẫn lại nha.

Hướng dẫn dùng types characters trong PHP

Nội dung chính
    PHP và mã hóa UTF-8Ở header:Trong file XML:Trong HTML:Chỉ định UTF-8 trong hàm hmlspecialchars:Khi link với MySQL:Sử dụng hàm xử lý chuỗi tương thích với UTF-8:MySQL với mã hóa UTF-8Thay đổi trong file config my.ini:Chuyển đổi tài liệu sử dụng mã hóa latin1 sang UTF-8Lời kết

Nội dung chính

    PHP và mã hóa UTF-8Ở header:Trong file XML:Trong HTML:Chỉ định UTF-8 trong hàm hmlspecialchars:Khi link với MySQL:Sử dụng hàm xử lý chuỗi tương thích với UTF-8:MySQL với mã hóa UTF-8Thay đổi trong file config my.ini:Chuyển đổi tài liệu sử dụng mã hóa latin1 sang UTF-8Lời kết

Nội dung chính

    PHP và mã hóa UTF-8Ở header:Trong file XML:Trong HTML:Chỉ định UTF-8 trong hàm hmlspecialchars: Khi link với MySQL:Sử dụng hàm xử lý chuỗi tương thích với UTF-8:MySQL với mã hóa UTF-8Thay đổi trong file config my.ini:Chuyển đổi tài liệu sử dụng mã hóa latin1 sang UTF-8Lời kết

Đã đăng vào thg 12 2, 2022 6:45 CH 7 phút đọc

Đối với một lập trình viên PHP hay MySQL, mọi thứ có vẻ như khá thuận tiện và đơn giản và thoải mái khi thao tác với tài liệu chỉ gồm những ký tự tiếng Anh. Cho đến khi bạn vướng vào sự rắc rối của mã hóa UTF-8 trong xử lý ngôn từ không phải tiếng Anh. Nói sơ lược về mã hóa UTF-8 thì đây là một kiểu mã hóa ký tự của tập ký tự Unicode. Nó được thiết kế để tương thích ngược với mã hóa ASCII và tránh những nhược điểm của UTF-16 và UTF-32. UTF-8 trở thành kiểu mã hóa phổ biến và chiếm ưu thế khi hơn một nửa số trang web hiện tại sử dụng kiểu mã hóa này. Trong nội dung bài viết này, sẽ có 3 hướng dẫn chính được trình bày để hoàn toàn có thể sử dụng mã hóa UTF-8 trong PHP và MySQL:

    Thay đổi trong file config php.ini và PHP code.Thay đổi trong file config my.ini và những vấn đề liên quan khác đến MySQL.Thay đổi tài liệu trong CSDL MySQL sử dụng mã hóa latin1 thành mã hóa UTF-8.

PHP và mã hóa UTF-8

Để sử dụng UTF-8 là kiểu mã hóa ký tự mặc định, thay đổi ở file config php.ini như sau: default_charset = "utf-8"; Thay đổi trong PHP code:

Ở header:

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

Trong file XML:

Tuy nhiên, không phải tất cả ký tự UTF-8 đều được đồng ý ở trong XML, vì vậy cần vô hiệu những ký tự này. Một hàm hữu dụng sau đây hoàn toàn có thể xử lý và xử lý vấn đề trên:

function utf8_for_xml($string) return preg_replace('/[^x0009x000ax000dx0020-xD7FFxE000-xFFFD]+/u', ' ', $string);

Trong HTML:

    HTML content: HTML form:

Chỉ định UTF-8 trong hàm hmlspecialchars:

htmlspecialchars($str, ENT_NOQUOTES, "UTF-8")

Khi link với MySQL:

Sử dụng hàm mysql_set_charset:

$link = mysql_connect('localhost', 'user', 'password'); mysql_set_charset('utf8', $link);

Từ PHP 5.5.0, hàm mysql_set_charset được thay thế bởi mysql::set_charset

$mysqli = new mysqli("localhost", "my_user", "my_password", "test"); /* check connection */ if (mysqli_connect_errno()) printf("Connect failed: %sn", mysqli_connect_error()); exit(); /* change character set to utf8 */ if (!$mysqli->set_charset("utf8")) printf("Error loading character set utf8: %sn", $mysqli->error); else printf("Current character set: %sn", $mysqli->character_set_name()); $mysqli->close();

Sử dụng hàm xử lý chuỗi tương thích với UTF-8:

Có nhiều hàm sẽ lỗi hoặc xử lý sai khi một ký tự cần nhiều hơn nữa 1 byte (như UTF-8). Ví dụ hàm strlen sẽ trả về số lượng byte chứ không phải số lượng ký tự. Để xử lý và xử lý việc này còn có 2 tùy chọn:

Sử dụng những hàm iconv (ví dụ: `iconv_strlen,…). Dù vậy, bản thân chuỗi ký tự vẫn nên phải đảm bảo được mã hóa đúng.Extension mbstring: extension đáp ứng một tập đầy đủ những hàm cho việc xử lý mã hóa sử dụng nhiều byte (multibyte)

MySQL với mã hóa UTF-8

Thay đổi trong file config my.ini:

[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
    MySQL UTF-8 thực sự chỉ là một phần của tập ký tự UTF-8 khi chỉ sử dụng tối đa 3 bytes trong khi mã hóa UTF-8 yêu cầu 4 bytes. Do đó, một số trong những ký tự không được tương hỗ trong MySQL UTF-8. Kể từ MySQL 5.5.3, điều này hoàn toàn có thể được giải quyết với tập ký tự utf8mb4.Trong trường hợp không setup mã hóa khi link với MySQL, thì sau khi link xong, hoàn toàn có thể sử dụng lệnh/truy vấn sau: set names UTF-8;Khi xác định kích cỡ của những trường kiểu varchar, đừng quên UTF-8 yêu cầu 4 bytes trên mỗi ký tự.

Chuyển đổi tài liệu sử dụng mã hóa latin1 sang UTF-8

Thiết lập setup ở file config my.ini như hướng dẫn thứ 2.Thực hiện câu lệnh sau: ALTER SCHEMAyour-db-nameDEFAULT CHARACTER SET UTF-8;Xác nhận mọi thứ đã được setup về UTF-8 mysql> show variables like 'char%';Tạo file dump cho việc quy đổi: mysqldump -u USERNAME -pDB_PASSWORD --opt --skip-set-charset --default-character-set=latin1 --skip-extended-insert DATABASENAME --tables TABLENAME > DUMP_FILE_TABLE.sqlThay thế charset trong file dump từ latin1 sang UTF-8 Ví dụ sử dụng Perl: perl -i -pe 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=UTF-8/' DUMP_FILE_TABLE.sql Đối với người tiêu dùng Windows: Việc quy đổi hoàn toàn có thể thực hiện bằng WordPad sử dụng hiệu suất cao find-and-replace.Kể từ giờ, việc thay đổi sẽ được thực hiện trên CSDL nên đảm bảo backup tài liệu trước khi thực hiện mysql> source "DUMP_FILE_TABLE.sql";Tìm kiếm những bản ghi hoàn toàn có thể bị quy đổi sai và sửa chúng (ví dụ những ký tự được mã hóa 2 lần). Vì những ký tự không phải ASCII là multi-byte (sử dụng nhiều hơn nữa 1 byte/ký tự) nên hoàn toàn có thể tìm chúng bằng phương pháp so sánh số byte và số lượng ký tự.
    Kiểm tra có ký tự multi-byte hay là không (nếu truy vấn sau trả về 0 thì không còn ký tự multi-byte và hoàn toàn có thể bỏ qua tiến trình tiếp theo) mysql> select count(*) from MY_TABLE where LENGTH(MY_FIELD) != CHAR_LENGTH(MY_FIELD);Copy những hàng có ký tự multi-byte sang bảng tạm:
create table temptable ( select * from MY_TABLE where LENGTH(MY_FIELD) != CHAR_LENGTH(MY_FIELD));
    Chuyển đổi ký tự bị mã hóa UTF-8 2 lần về dạng UTF-8 chuẩn. Vì MySQL đã tự động quy đổi tài liệu sang UTF-8 một lần nữa trên tài liệu UTF-8 nên cần một “thủ thuật” nhỏ để tránh việc quy đổi này. Đầu tiên, quy đổi kiểu mã hóa về latin1, do đó mã hóa 2 lần sẽ bị vô hiệu : alter table temptable modify temptable.ArtistName varchar(128) character set latin1; Lưu ý: Cần đặt đúng kiểu tài liệu cũ. Như ở ví dụ trên là vachar(128) Vấn đề giờ đây là nếu setup cột hiện tại về mã hóa UTF-8, MySQL sẽ quy đổi từ latin1 về UTF-8. Để tránh việc này, tất cả chúng ta thay đổi kiểu tài liệu của cột về blob rồi sau đó mới cài đặt UTF-8. Điều này tận dụng từ việc MySQL không quy đổi kiểu mã hóa của một blob.
alter table temptable modify temptable.ArtistName blob; alter table temptable modify temptable.ArtistName varchar(128) character set UTF-8;
    Loại bỏ hàng chỉ có ký tự single-byte (sử dụng một byte) ra khỏi bảng tạm: delete from temptable where LENGTH(MY_FIELD) = CHAR_LENGTH(MY_FIELD);Thay thế tài liệu vào bảng chính replace into MY_TABLE (select * from temptable);
Kiểm tra tài liệu còn sót lại, nếu cần thì thực hiện lại từ bước 7.

Lời kết

Mã hóa tài liệu đòi hỏi sự thận trọng và tỉ mỉ. Nếu làm rõ về nó, lập trình viên hoàn toàn có thể tiết kiệm một khoảng chừng thời gian và công sức của con người đáng kể khi đối mặt với những vấn đề về tài liệu. Bài viết này như một lần nữa xác định tầm quan trọng của việc xem xét khi định nghĩa charset trong dự án công trình bất Động sản cũng như môi trường tự nhiên thiên nhiên phát triển ngay từ ban đầu.

Referrence: https://www.toptal.com/php/a-utf-8-primer-for-php-and-mysql

All rights reserved

Tải thêm tài liệu liên quan đến nội dung bài viết Hướng dẫn dùng types characters trong PHP programming php Đầu trong PHP Input trong PHP file_get_contents(php://input) $_get trong php N trong PHP

Video Hướng dẫn dùng types characters trong PHP ?

Bạn vừa Read nội dung bài viết Với Một số hướng dẫn một cách rõ ràng hơn về Video Hướng dẫn dùng types characters trong PHP tiên tiến nhất

Share Link Cập nhật Hướng dẫn dùng types characters trong PHP miễn phí

Heros đang tìm một số trong những Share Link Cập nhật Hướng dẫn dùng types characters trong PHP miễn phí.

Giải đáp thắc mắc về Hướng dẫn dùng types characters trong PHP

Nếu sau khi đọc nội dung bài viết Hướng dẫn dùng types characters trong PHP vẫn chưa hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Admin lý giải và hướng dẫn lại nha #Hướng #dẫn #dùng #types #characters #trong #PHP - Hướng dẫn dùng types characters trong PHP - 2022-09-25 03:12:22

Post a Comment

Previous Post Next Post

Discuss

×Close