Đôi khi bạn sẽ thấy các ký tự kỳ lạ hiển thị như thế này trong văn bản tiếng Việt:
“á”,”à “,”ả”,”ã”,”ạ”,”ă”,”ắ”,”ằ”,”ẳ”,”ẵ”,”ặ”,”â”,”ấ”,”ầ”,”ẩ”,”ẫ”,”Ẕ,”é”,”è”,”ẻ”,”ẽ”,”ẹ”,”ê”,”ế”,”á»”,”ể”,”á»…”,”ệ”,”ó”,”ò”,”á»”,”õ”,”á»”,”ô”,”ố”,”ồ”,”ổ”,”á»—”,”á»™”,”Æ¡”,”á»”,”á»›”,”ở”,”ỡ”,”ợ”,”ú”,”ù”,”ủ”,”Å©”,”ụ”,”Æ°”,”ứ”,”ừ”,”á»”,”ữ”,”á»±”,”ý”,”ỳ”,”á»·”,”ỹ”,”ỵ”,”Ô,”ì”,”ỉ”,”Ä©”,”ị”,”Ä‘”
“Ô,”À”,”Ả”,”Ô,”Ạ“,”Ä‚”,”Ắ”,”Ằ”,”Ẳ”,”Ẵ”,”Ặ”,””,”Ấ”,”Ầ”,”Ẩ”,”Ẫ”,”Ậ”,”É”,”È”,”Ẻ”,”Ẽ”,”Ẹ”,”Ê”,”Ế”,”Ề”,”Ể”,”Ễ”,”Ệ”,”Ó”,”Ò”,”Ỏ”,”Õ”,”Ọ”,”Ô”,”á»”,”á»’”,”á»””,”á»–”,”Ộ”,”Æ “,”Ờ”,”Ớ”,”Ở”,”á» “,”Ợ”,”Ú”,”Ù”,”Ủ”,”Ũ”,”Ụ”,”Ư”,”Ứ”,”Ừ”,”Ử”,”á»®”,”á»°”,”Ô,”Ỳ”,”Ỷ”,”Ỹ”,”á»´”,”Ô,”Ì”,”Ỉ”,”Ĩ”,”Ị”,”Ä”
Ví dụ dưới đây là 25 câu đầu trong truyện Kiều:
Trăm năm trong cõi ngÆ°á»i ta,
Chữ tà i chữ mệnh khéo là ghét nhau.
Trải qua má»™t cuá»™c bể dâu,
Những Ä‘iá»u trông thấy mà đau Ä‘á»›n lòng.
Lạ gì bỉ sắc tÆ° phong,
Trá»i xanh quen thói má hồng Ä‘ánh ghen.
Cảo thÆ¡m lần giở trÆ°á»›c Ä‘èn,
Phong tình cổ lục còn truyá»n sá» xanh.
Rằng năm Gia TÄ©nh triá»u Minh,
Bốn phương phẳng lặng, hai kinh vững và ng.
Có nhà viên ngoại há» VÆ°Æ¡ng,
Gia tÆ° nghÄ© cÅ©ng thÆ°á»ng thÆ°á»ng bá»±c trung.
Má»™t trai con thứ rốt lòng,
VÆ°Æ¡ng Quan là chữ, nối dòng nho gia.
Äầu lòng hai ả tố nga,
Thúy Kiá»u là chị, em là Thúy Vân.
Mai cốt cách, tuyết tinh thần,
Má»—i ngÆ°á»i má»™t vẻ, mÆ°á»i phân vẹn mÆ°á»i.
Vân xem trang trá»ng khác vá»i,
Khuôn trăng đầy đặn, nét ngà i nở nang.
Hoa cÆ°á»i ngá»c thốt Ä‘oan trang,
Mây thua nÆ°á»›c tóc, tuyết nhÆ°á»ng mà u da.
Kiá»u cà ng sắc sảo, mặn mà ,
So bỠtà i, sắc, lại là phần hơn.
Là n thu thủy, nét xuân sÆ¡n,
Hoa ghen thua thắm, liá»…u há»n kém xanh.
Má»™t, hai nghiêng nÆ°á»›c nghiêng thà nh,
Sắc Ä‘Ã nh Ä‘òi má»™t, tà i Ä‘Ã nh há»a hai.
Thông minh vốn sẵn tÆ° trá»i,
Nó có thể xuất hiện khi bạn đọc một tài liệu nào đó, hoặc trong dữ liệu ứng dụng của chính bạn.
Hiện tôi cũng chỉ biết lỗi này liên quan đến vấn đề mã hóa, chứ không rõ nguyên nhân sâu xa tại sao nó lại bị như vậy. Tuy nhiên trong bài viết này tôi vẫn có cách để bạn có thể khắc phục vấn đề, và hiển thị chính xác thông tin tiếng Việt của nội dung.
Bạn có thể dùng hàm dưới đây để chuyển các mã lỗi về mã chuẩn:
function fix_vietnamese_font($str) {
$lowercase_err_char = array("á","à ","ả","ã","ạ","ă","ắ","ằ","ẳ","ẵ","ặ","â","ấ","ầ","ẩ","ẫ","áº","é","è","ẻ","ẽ","ẹ","ê","ế","á»","ể","á»…","ệ","ó","ò","á»","õ","á»","ô","ố","ồ","ổ","á»—","á»™","Æ¡","á»","á»›","ở","ỡ","ợ","ú","ù","ủ","Å©","ụ","Æ°","ứ","ừ","á»","ữ","á»±","ý","ỳ","á»·","ỹ","ỵ","ì","ỉ","Ä©","ị","Ä‘","Ã");
$lowercase_normal_char = array("á","à","ả","ã","ạ","ă","ắ","ằ","ẳ","ẵ","ặ","â","ấ","ầ","ẩ","ẫ","ậ","é","è","ẻ","ẽ","ẹ","ê","ế","ề","ể","ễ","ệ","ó","ò","ỏ","õ","ọ","ô","ố","ồ","ổ","ỗ","ộ","ơ","ờ","ớ","ở","ỡ","ợ","ú","ù","ủ","ũ","ụ","ư","ứ","ừ","ử","ữ","ự","ý","ỳ","ỷ","ỹ","ỵ","ì","ỉ","ĩ","ị","đ","í");
$uppercase_err_char = array("Ã","À","Ả","Ã","Ạ","Ä‚","Ắ","Ằ","Ẳ","Ẵ","Ặ","Â","Ấ","Ầ","Ẩ","Ẫ","Ậ","É","È","Ẻ","Ẽ","Ẹ","Ê","Ế","Ề","Ể","Ễ","Ệ","Ó","Ò","Ỏ","Õ","Ọ","Ô","á»","á»’","á»”","á»–","Ộ","Æ ","Ờ","Ớ","Ở","á» ","Ợ","Ú","Ù","Ủ","Ũ","Ụ","Ư","Ứ","Ừ","Ử","á»®","á»°","Ã","Ỳ","Ỷ","Ỹ","á»´","Ã","Ì","Ỉ","Ĩ","Ị","Ä");
$uppercase_normal_char = array("Á","À","Ả","Ã","Ạ","Ă","Ắ","Ằ","Ẳ","Ẵ","Ặ","Â","Ấ","Ầ","Ẩ","Ẫ","Ậ","É","È","Ẻ","Ẽ","Ẹ","Ê","Ế","Ề","Ể","Ễ","Ệ","Ó","Ò","Ỏ","Õ","Ọ","Ô","Ố","Ồ","Ổ","Ỗ","Ộ","Ơ","Ờ","Ớ","Ở","Ỡ","Ợ","Ú","Ù","Ủ","Ũ","Ụ","Ư","Ứ","Ừ","Ử","Ữ","Ự","Ý","Ỳ","Ỷ","Ỹ","Ỵ","Í","Ì","Ỉ","Ĩ","Ị","Đ");
$err_char = array_merge($lowercase_err_char, $uppercase_err_char);
$normal_char = array_merge($lowercase_normal_char, $uppercase_normal_char);
$num = count($err_char);
for ($j=0; $j<$num; $j++) { // chạy vòng lặp để chuyển ký tự
$pattern = '/'.$err_char[$j].'/';
$str = preg_replace($pattern, $normal_char[$j], $str);
}
return $str;
}
Việc chuyển thành công không phải lúc nào cũng đạt 100% các ký tự, nhưng thường là trên 95% và đủ để chúng ta hiểu chính xác văn bản muốn nói gì.