Ko hiểu sao mình type dòng chữ sau đây Chào mọi người thì nó lại hiển thị như sau : Chào m�?i ngư�?i Mặc dù mình đã thêm tag <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> vào index. Có ai biết vì sao ko ???
Lỗi trên có thể do dùng trình WordPad để type tiếng việt , PHP nó nhận diện kí tự Unicode khác với Html nên không thể gõ bình thường được . Để khác phục , bạn hãy chuyển qua 1 trình chuyên nghiệp hơn , như DreamWeaver chẳng hạn .
Ví dụ như thế này. Các bác vào đây. www.olala.tv/magicblock Type dòng chữ chào mọi người vào phần thông điệp rồi nhấn enter thì biết. Mình type lên web chứ hông dùng trình nào để viết cả
Vừa kiểm tra rồi. Font đúng. encoding cũng đúng, post dữ liệu lên server cũng dùng post. >>> Lỗi ở database. 90% là do lúc create database không chỉnh encoding thành utf-8 mà để mặc định (latin1). Cho nên lúc insert dữ liệu vào nó bị sai đi. Convert tất cả các table thành utf-8 là chạy. ___________________________ Có ít time free nên tui nói kỹ hơn 1 chút. Ký tự thuộc latin1, mỗi chữ chỉ có 1 byte. Trong khi đó ký tự utf-8 có chữ có 1 byte có chữ cần 2 bytes. Chào mọi người Chào m�?i ngư�?i Nhìn 2 dòng trên có thể biết là chữ ọ và chữ ờ là 2 bytes. Các chữ hiển thị bình thường thì đúng là 1 bytes. Khi sử dụng encoding utf-8, 2 bytes cạnh nhau mà tương ứng với ký tự chữ nào đó thì nó sẽ hiện chữ đó. Trong khi đó với latin1 thì 2 byte nó hiển thị lần lượt từng byte một.
Chào bạn, rất cám ơn sự giúp đỡ của bạn, nhưng mình vô phpadmin thì thấy nó đã utf-8 rùi bạn à. hix hix
Vậy chắc là do đoạn code phần xử lý phần submit đấy , vì trước khi insert vào database thường sẽ phải qua nhiều khâu , nên trong những khâu đó đã có phần lọc đi những ký tự của UTF . Bạn thử check lại xem .
Thx bác darkgamer. Lúc đầu mình cũng nghĩ vậy đó, đã kiểm tra nhưng ko có vấn đề gì cả. Ko lẽ bó tay sao ???