Tôi muốn phát hiện mã hóa của một số văn bản (sử dụng PHP). Vì mục đích đó, tôi sử dụng hàm mb_detect_encoding().Hành vi lạ của mb_detect_order() trong PHP
Vấn đề là hàm trả về các kết quả khác nhau nếu tôi thay đổi thứ tự mã hóa có thể bằng hàm mb_detect_order().
Hãy xem xét ví dụ sau
$html = <<< STR
ちょっとのアクセスで落ちてしまったり、サーバー障害が多いレンタルサーバーを選ぶとあなたのビジネス等にかなりの影響がでてしまう可能性があります。特に商売をされている個人の方、法人の方は気をつけるようにしてください
STR;
mb_detect_order(array('UTF-8','EUC-JP', 'SJIS', 'eucJP-win', 'SJIS-win', 'JIS', 'ISO-2022-JP','ISO-8859-1','ISO-8859-2'));
$originalEncoding = mb_detect_encoding($str);
die($originalEncoding); // $originalEncoding = 'UTF-8'
Tuy nhiên nếu bạn thay đổi thứ tự của bảng mã trong mb_detect_order() kết quả sẽ khác nhau:
mb_detect_order(array('EUC-JP','UTF-8', 'SJIS', 'eucJP-win', 'SJIS-win', 'JIS', 'ISO-2022-JP','ISO-8859-1','ISO-8859-2'));
die($originalEncoding); // $originalEncoding = 'EUC-JP'
Vì vậy, câu hỏi của tôi là:
Tại sao điều đó lại xảy ra?
Có cách nào trong PHP để phát hiện mã hóa văn bản một cách chính xác và rõ ràng không?
cảm ơn bạn rất nhiều! – Termos