Tôi có biểu mẫu HTML và một số người dùng đang sao chép/dán văn bản từ MS Word. Khi có dấu nháy đơn hoặc dấu ngoặc kép, họ nhận được dịch sang nhân vật hài hước như:Tại sao dấu ngoặc kép biến thành ký tự hài hước khi được gửi dưới dạng HTML?
'Â € Â ™ và Ã ¢ Â € Â ™
Cột cơ sở dữ liệu là đối chiếu utf8_general_ci.
Làm cách nào để có các ký tự thích hợp hiển thị?
Chỉnh sửa: Sự cố được giải quyết. Dưới đây là cách tôi đã khắc phục sự cố:
Ran mysql_query("SET NAMES 'utf8'");
trước khi thêm/truy xuất lại từ cơ sở dữ liệu. (nhờ bình luận của Donal bên dưới).
Và có phần lẻ, hàm php urlencode($text)
được áp dụng khi hiển thị, do đó phải được xóa.
Tôi cũng đảm bảo rằng tiêu đề cho trang và yêu cầu/phản hồi ajax đều là utf8.
MS Word thay đổi dấu ngoặc kép thành "dấu ngoặc kép thông minh", bất kỳ điều gì ngoài thông minh. Họ sử dụng "trang mã" của Microsoft thay vì Unicode. –
Bạn sẽ nhận thấy điều này với một số dấu gạch ngang quá. – Buggabill
Nếu tất cả các mã hóa được chỉ định chính xác, các mã hóa này sẽ được tự động chuyển đổi thành Unicode tương đương. Tôi nghi ngờ vấn đề là cụ thể đối với Word; thử gõ ví dụ Alt + 130 (é) trực tiếp, và xem nó đi qua sạch sẽ. – Thomas