2011-02-04 13 views
5

मेरी वेबसाइट में लोगों को टिप्पणियां पोस्ट करने के लिए एक साधारण टेक्स्टरेरा वाला एक फॉर्म है। समस्या यह है कि कभी-कभी मुझे uft8 में जानकारी मिलती है और कभी-कभी आईएसओ में भी। क्या इसे नियंत्रित करना संभव है?php form utf8 जमा करें?

शायद मैं कुछ गलत कर रहा हूं, लेकिन क्या यह संभव है कि ब्राउज़र उस डेटा के कोडिफिकेशन को बदलता है जो इसे भेजता है?

धन्यवाद

+0

के संभावित डुप्लिकेट [कैसे तुम जानते हो क्या उपयोगकर्ता एन्कोडिंग ब्राउज़र में inputing है?] (Http: // stackoverflow .com/प्रश्न/4559564/कैसे-करें-आप-जानते-क्या-एन्कोडिंग-उपयोगकर्ता-इनपुट-इन-द-ब्राउजर) –

उत्तर

16

आप क्या चरित्र सेट आप स्वीकार कर रहे हैं, अपने रूप में यह सेट के बारे में सुनिश्चित

<form method="post" action="/your/url/" accept-charset="UTF-8"> 
</form> 

आप सभी स्वीकार्य चरित्र देख सकते हैं होना चाहते हैं यहाँ सेट: Character Sets

+0

इसे प्यार करता है, लेकिन क्या यह सच है कि यह IE पर काम नहीं करता है? –

+1

मेरा मानना ​​है कि यह विपरीत है जो काम नहीं करता है। अगर मुझे सही याद है कि आईई यूटीएफ -8 का सम्मान करेगा, लेकिन यदि आप अपना क्रिससेट आईएसओ पर सेट करते हैं तो यह असफल हो जाएगा। यह केवल नए संस्करणों में गिना जाता है। आप पृष्ठ के वर्णमाला को भी सुनिश्चित करने के लिए निर्दिष्ट आयुष के रूप में सेट कर सकते हैं। –

3

आप हमेशा यूटीएफ -8 को मजबूर कर सकते हैं। फिर आप यूटीएफ -8 विज्ञापन डेटा में डेटा सेट को बदलने के बिना अधिकांश मानव भाषाओं में डेटा भेज, प्राप्त और स्टोर कर सकते हैं।

<meta http-equiv="Content-type" content="text/html; charset=utf-8"/> 
+0

धन्यवाद, मैं इसे भी जोड़ दूंगा, लेकिन ... क्या यह utf-81 या utf-8 है? –

+0

यह यूटीएफ -8 है। एक utf-81 नहीं है। – Michael

-1

अगर समस्याओं के सभी पर होता है आप एक से अधिक विभिन्न ब्राउज़रों के साथ वृषण उन्हें या केवल IE के कुछ है /?

+0

हमारी अधिकांश समस्याएं केवल आईई पर आती हैं ... –

-3

आप PHP के utf8_encode फ़ंक्शन का उपयोग करके $ _POST डेटा को यूटीएफ -8 में एन्कोड कर सकते हैं।

कुछ की तरह:

$_POST['comments'] = utf8_encode($_POST['comments']); 
+0

यह पहले से ही utf-8 के रूप में भेजी गई सामग्री को डबल-एन्कोड करेगा। – cweiske

+0

उर्फ। सच। यदि आप एन्कोड करने के लिए PHP का उपयोग करना चाहते हैं, तो यह (http://stackoverflow.com/questions/910793/detect-encoding-and-make-everything-utf-8) मदद कर सकता है ... हालांकि एन्कोडिंग का पता लगाना बहुत मुश्किल है। – voidstate

0

लेकिन ..., एन्कोडिंग से पहले जांच लें कि क्या स्ट्रिंग बाकी UTF8 पहले से ही है आप डबल एन्कोड यह

function str_to_utf8 ($string) { 

    if (mb_detect_encoding($string, 'UTF-8', true) === false) { 
     $string = utf8_encode($string); 
    } 

    return $str; 
} 

या का उपयोग

$string = utf8_encode(utf8_decode($string)); 

इसलिए आप स्ट्रिंग

को डबल-एन्कोड नहीं करते हैं
0

मैं mbstring.http_input बदलकर इस समस्या का समाधान = मेरी php.ini फ़ाइल में पारित

संबंधित मुद्दे