Đô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ì.