2012-06-19 14 views
14

मैं साइट पर दोबारा कोडिंग के अंतिम चरण में हूं जो औपचारिक रूप से आईएसओ -885 9 -1 वर्ण एन्कोडिंग का उपयोग करता है, लेकिन अब पूरे यूटीएफ -8 है।यूटीएफ 8 मेलो में विशेष पात्र: विषय = लिंक और आउटलुक

समस्या यह है कि mailto href लिंक का विषय खंड Outlook के साथ काम नहीं कर रहा है, जब विशेष वर्णों का उपयोग किया जाता है। मुझे सामान्य गड़बड़ वाले चरित्र प्रस्तुतिकरण मिलते हैं, जब लिंक क्लिक किया जाता है और नई मेल विंडो आउटलुक में दिखाई देती है तो एक स्पष्ट वर्ण एन्कोडिंग समस्या का संकेत मिलता है।

मैं rawurlencode() की कोशिश की है चौथाई इस मुद्दे को ठीक करने के लिए, लेकिन यह आउटलुक के साथ काम करने के लिए ...

<a href="mailto:[email protected]?subject=<?=rawurlencode($subj);?>">send email</a> 

तो फिर सोचा, आउटलुक एक अलग एन्कोडिंग पर जोर देते हैं चाहिए नहीं लगता है, और करने की कोशिश की utf-8 विषय स्ट्रिंग को पहले डीकोड कर रहा है ...

<a href="mailto:[email protected]?subject=<?=rawurlencode(utf8_decode($subj));?>">send email</a> 

बिंगो! महान आउटलुक काम करता है। लेकिन अब सब कुछ :(

मैं एक समाधान है कि सभी मेल क्लाइंट करवाते हैं काम करता है नहीं मिल रहा।

यह सभी मेल क्लाइंट भर में ठीक काम किया जब पूरे पृष्ठ iso-8859-1 में प्रदर्शित किया गया था में विफल रहता है। लेकिन जब नहीं पेज की सामग्री utf-8 है।

दुर्भाग्य से ग्राहक उसके नीचे सीधे एक कार्य मेल प्रपत्र होने के बावजूद, यह सीधे ईमेल लिंक बनाए रखने के लिए चाहता है!

वहाँ इस के लिए एक खुश समाधान है?

+1

आप ("विषय" हेडर में उपयोग के लिए उद्धरित मुद्रण योग्य के क्यू संस्करण चाहते हैं या बेस 64 के बी संस्करण, अगर 7-बिट ASCII के सुपरसेट का उपयोग नहीं करते हैं)। एमआईएम आरएफसी देखें। – ninjalj

+0

मुझे लगता है कि क्यू संस्करण का उपयोग किया जा रहा है। "Véhicule" शब्द को mailto link url में "v% C3% A9hicule" में परिवर्तित किया गया है। चूंकि यह एक यूआरएल है, यह मेल क्लाइंट पर "v = C3 = A9hicule" के बराबर होगा। लेकिन Outlook तक पहुंचने पर सही प्रदर्शित नहीं होता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि आउटलुक आईएसओ -885 9 -1 एन्कोडिंग (जहां "é" "= E9" होगा)। लेकिन फिर, यह अन्य सभी ग्राहकों में काम करने में विफल रहता है। – Richt222

उत्तर

9

आप utf-8 इस कोशिश का उपयोग करते हैं:

<?php $subject = "=?UTF-8?B?" . base64_encode($subject) . "?="; ?> 
-1

आपको टी की आवश्यकता है ओ जांच निम्नलिखित

1) एचटीएमएल कोड

<meta contentType="text/html; charset=UTF-8"/> 

2) ब्राउज़र आईई दृश्य के लिए सेटिंग -> एन्कोडिंग -> यूनिकोड (UTF-8)

3) सामग्री प्रकार/MIME प्रकार होना चाहिए "आवेदन/एक्स-www-form-urlencoded"

+0

1 और 2 दोनों सकारात्मक साबित होते हैं I मुझे यकीन है कि 3 के बारे में निश्चित नहीं है। क्यों, या क्या, उस सामग्री/एमआईएमई प्रकार पर सेट किया जाना चाहिए? यह एक रूप नहीं है, इसलिए मैं थोड़ा उलझन में हूं। – Richt222

0

विषय पंक्ति कभी-कभी खराब होने का कारण यह है क्योंकि जब आप एन्कोडिंग निर्दिष्ट करते हैं, तो यह ईमेल हेडर पर लागू नहीं होता है। आपकी विषय पंक्ति ईमेल हेडर में है। यहाँ विषय पंक्ति पर UTF8 एन्कोडिंग लागू करने के लिए एक समारोह है:

function EncodeSubject($_subject) 
{ 
    $encodedSubject = str_replace("&quot;", '"', $_subject); 
    $encodedSubject = preg_replace('/[^x09\x20-\x3C\x3E-\x7E]/e', 'sprintf("=%02X", ord("$0"));', $encodedSubject); 
    $encodedSubject = str_replace(' ', '_', $encodedSubject); 
    return ="?utf-8?q" . $encodedSubject . "?="; 
} 
संबंधित मुद्दे