2013-07-26 21 views
6

Tôi đang tạo một trang có dấu Latin như á, ã, ç và các ký tự khác. Trang web này lấy dữ liệu từ cơ sở dữ liệu SQL. Tôi đang sử dụng này trên <head>:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
Với tiêu đề này các nhân vật HTML có dấu cũng tốt, nhưng dữ liệu SQL đang được hiển thị như çã thay vì ão, và nếu tôi thay đổi charset từ ISO-8859-1 sang UTF -8, tất cả các ký tự có dấu HTML được hiển thị bằng dấu (dấu chấm hỏi) và dữ liệu SQL cho thấy dấu trọng âm.
Có cách nào để sửa chữa nó ngoài việc thoát khỏi tất cả các ký tự HTML hoặc các ký tự SQL?Ký tự dấu chấm hỏi trên HTML nếu tôi sử dụng UTF-8 và các ký tự lạ trên dữ liệu SQL nếu tôi sử dụng ISO-8859-1

PS: Tôi đã thử mysql_set_charset('utf8');SET NAMES utf8, không hoạt động với tôi.

+0

Và collation cơ sở dữ liệu là gì? – Renato

+0

Xin lỗi vì câu trả lời trễ, nhưng sự đối chiếu là UTF-8. – Gus

Trả lời

6

Khi bạn thấy dấu hỏi, tài liệu của bạn chưa được lưu trữ đúng mã hóa (phải là UTF-8 trong trường hợp của bạn) hoặc nó không được phân phát đúng tiêu đề và/hoặc thẻ meta.

Nếu bạn muốn làm việc với các nhân vật đặc biệt như è, tài liệu html của bạn nên được lưu lại dưới dạng UTF-8 và phục vụ như là UTF-8:

<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 

Thêm vào đó, bạn phải sử dụng UTF-8 cho bạn kết nối cơ sở dữ liệu:

… ("SET NAMES utf8");
… ("SET CHARACTER SET utf8");

Và cuối cùng nhưng không kém phần quan trọng, bạn phải sử dụng UTF-8 cho chính cơ sở dữ liệu.

Như bạn sẽ thấy, bạn đã đi đúng hướng ... bạn chỉ cần "sử dụng tất cả" (như tôi đã mô tả ở trên) thay vì thử một lần và bỏ qua phần còn lại. Đó là sự kết hợp làm cho nó hoạt động. Simpler cho biết: nếu bạn đi "UTF-8", bạn sẽ phải suy nghĩ "UTF-8" ở khắp mọi nơi và dính vào nó trong các tệp html, tiêu đề, thẻ meta, kết nối cơ sở dữ liệu và (các) cơ sở dữ liệu. Sử dụng cùng một mã hóa ở mọi nơi và dính vào nó, thay vì sử dụng "một chút UTF-8 ở đây và một chút ISO-bất cứ điều gì có".

+2

Vấn đề của tôi là tài liệu HTML. Vì tôi đã sử dụng Komodo Edit nên nó không được lưu dưới dạng UTF-8. Lưu nó trên notepad và bây giờ nó hoạt động! Cảm ơn đã giúp đỡ. Tôi sẽ xem xét các cài đặt Chỉnh sửa Komodo để tránh các sự cố trong tương lai. – Gus

+1

@Gus Vui vì bạn đã có thể khắc phục. Vâng, sau đó tất cả những gì còn lại để làm cho tôi là chúc bạn một ngày cuối tuần tốt đẹp. ;) –

+1

Cảm ơn bạn đã rất hữu ích và tôi hy vọng bạn có một ngày cuối tuần tuyệt vời! – Gus

Các vấn đề liên quan