Ko hiển thị đc tiếng Việt rõ ràng trên .php, giúp mình với

StarShaper

Mario & Luigi
Tham gia ngày
10/5/05
Bài viết
704
Reaction score
0
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.
 
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
28235216cc5.jpg
 
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 ???
 
Bạn quăng cho mình cái source code đó đi .
 
Đã fix đc lỗi rồi, thx darkgamer và dark13ndp nhìu.
Rep 2 người phát coi như để thx
 
Back
Top