Tôi vừa dành 2 ngày điều tra vấn đề này. Vấn đề của chúng tôi là các liên kết mailto: trên các trang web được mã hóa utf-8 của chúng tôi không hoạt động đối với người dùng Outlook nếu chuỗi chủ đề = chứa các ký tự không phải ascii, ví dụ như các ký tự Na Uy. Ví dụ: "mailto: [email protected]? Subject = julegløgg og fårikål"
Từ những gì tôi đã học cho đến nay, Outlook không xử lý bất kỳ điều gì khác ngoài ASCII và ký tự iso-8859-1. Vì vậy, khi cố gắng nhấp vào liên kết mailto ở trên (hoặc từ IE hoặc Firefox), Outlook không giải mã được các ký tự, để đối tượng bị hỏng và chứa các ký tự "lạ".
Vì vậy, bước tiếp theo là cố gắng mã hóa lại các trang trong ISO-8859-1. Những gì chúng ta làm là thay thế các liên kết mailto gốc trên trang utf-8 với một liên kết đến một "email-to-iso" -service, như thế này:
http://url.com/service.php?service=util.mailtoencode&mailto=mail%40coretrek.no%3Fsubject%3Demne+%C3%B8%C3%A6%C3%A5+emne
Trang này sẽ chuyển đổi các nhân vật mailto đến iso-8859-1 và sau đó xuất toàn bộ nội dung trang trong iso-8859-1. Một javascript trên trang, có chứa "location.href = 'mailto: ...'" được sử dụng để tự động mở ứng dụng email của khách hàng.
Cho đến giờ mọi thứ đều ổn. Điều này thực sự hoạt động trong Internet Explorer, cả với Thunderbird và Outlook (được thử nghiệm trên IE7 trên WinXP với Outlook express và TB 2).
NHƯNG vấn đề hiện tại thực sự là Firefox. Có vẻ như Firefox không thể giải mã các url được mã hóa url chứa các ký tự chỉ tìm thấy trong ISO-8859-1 nhưng không phải trong ASCII (như là Na Uy, được đại diện bởi% E5 khi được mã hóa). Cùng một å được xử lý đúng nếu mã hóa trang là utf-8, nhưng có vẻ như các nhà phát triển Firefox đã quên thử nghiệm các ký tự đặc biệt cùng với bộ ký tự ISO-8859-1. Kết quả là Firefox chuyển một chuỗi chưa giải mã (vẫn còn chứa% E5 intstead của å) cho ứng dụng email. Và, đáng ngạc nhiên, điều này được xử lý đúng bởi Outlook (mà quản lý để giải mã chuỗi chính nó), nhưng không phải bởi Thunderbird, mà có thể có lỗi tương tự như Firefox. Nếu bạn KHÔNG mã hóa url chủ đề, chuỗi được chuyển chính xác đến Thunderbird, nhưng không được chuyển tới Outlook.
Chúng tôi cũng đã thử các phương pháp mã hóa khác, như htmlentities, htmlspecialchars, mã hóa base64 của php, nhưng tất cả đều không thành công theo cách này hay cách khác.
Vì vậy, tóm tắt:
trang mã hóa trong utf-8:
IE luôn thất bại
FF -> Thunderbird: OK
FF -> Outlook: FAIL
Các trang được mã hóa trong iso-8859-1:
IE: OK
FF -> Thunderbird: Thất bại nếu đối tượng là url mã hóa, ok nếu không muốn nói)
FF -> Outlook: Thất bại nếu đối tượng không được URL mã hóa, ok nếu mã hóa) (đây là Windows, trên Ubuntu Linux FF và TB hoạt động OK luôn).
Hy vọng điều này hữu ích cho những người khác có cùng vấn đề.
Tôi có cùng một vấn đề . Bạn có thể chọn một aswer hoặc đăng của riêng bạn? – AyexeM