मैं $ _REQUEST में वर्ण सेट कैसे जान सकता हूं? और $ _REQUEST के चरित्र सेट को कैसे सेट करें?strlen, mb_strlen, जिसका उपयोग करने के लिए?
उत्तर
इसे छोटा करने के लिए: आपको वास्तव में जीईटी या पोस्ट के माध्यम से आपकी PHP स्क्रिप्ट में पारित चर पर उपयोग किए जाने वाले एन्कोडिंग (वर्ण सेट) के बारे में वास्तव में पता नहीं है (विशेष रूप से यहां एक समस्या है)। सम्मेलन ब्राउज़र द्वारा action
में निर्दिष्ट सर्वर-साइड संसाधन के लिए पोस्ट फॉर्म- पृष्ठ एन्कोडिंग का उपयोग करके योगदान दें जिसे http-equiv
-meta-tag (charset
-HTML5 में मेटा-टैग) या HTTP शीर्षलेख के माध्यम से निर्दिष्ट किया जा सकता है। वैकल्पिक रूप से कुछ ब्राउज़र accept-charset
का भी सम्मान करते हैं-सही एन्कोडिंग को चुनते समय फॉर्म पर योगदान दें।
जीईटी पैरामीटर और यूआरएल का एन्कोडिंग ब्राउज़र स्टेटिंग पर निर्भर करता है और इसलिए उपयोगकर्ता द्वारा नियंत्रित किया जा सकता है। आपको एक विशिष्ट एन्कोडिंग पर भरोसा नहीं करना चाहिए।
आम तौर पर आप लगातार UTF-8 सब कुछ के लिए उपयोग कर और HTTP हेडर में सही एन्कोडिंग (Content-Type: text/html; charset=UTF-8
) निर्दिष्ट करके सबसे एन्कोडिंग संबंधी समस्याओं से परिभ्रमण करेंगे - यह सब में सही एन्कोडिंग (UTF-8) निकलेगा वेरिएबल जो आपकी स्ट्रिंग में पास की जाती हैं (हम रूज स्क्रिप्ट्स के बारे में बात नहीं कर रहे हैं जो जानबूझकर एन्कोडिंग के साथ गड़बड़ करने की कोशिश करते हैं ताकि आपकी आक्रमण वैक्टरों को आपकी स्क्रिप्ट में अनुमति दी जा सके)। आपको अपने जीईटी पैरामीटर में या यूआरएल में गैर-एसीआई-अक्षरों पर भी भरोसा नहीं करना चाहिए (यही कारण है कि एसईओ-फ्रेंडली लिंक उन पात्रों को हटाते हैं या उन्हें प्रतिस्थापित करते हैं)।
यदि आप सुनिश्चित करते हैं कि यूटीएफ -8 एकमात्र अनुमत चरित्र सेट है तो आप उदाहरण के लिए एक चर की लंबाई जांचने के लिए mb_strlen($string, 'UTF-8')
का उपयोग कर सकते हैं।
संपादित करें: (जोड़ा कुछ लिंक)
कुछ बातें आपको पढ़ने के लिए:
यह जानने के लिए कि कौन सी एन्कोडिंग वर्तमान में सेट है, mb_internal_encoding का उपयोग करें। यदि आप एप्लिकेशन को विभिन्न एन्कोडिंग के लॉग का उपयोग करते हैं तो आपके पास mb_strlen का उपयोग करने के लिए बेहतर है।
चीयर्स
आमतौर पर आप के बाद से आप HTML आप ग्राहक के लिए भेज से $ _REQUEST बनाने वर्ण एन्कोडिंग का नियंत्रण है।
यानी: यह आपके द्वारा PHP से भेजे गए पृष्ठ द्वारा उत्पन्न होता है।
इस प्रकार आपको एन्कोडिंग का पता लगाना नहीं चाहिए।
mb_functions का उपयोग करने से मल्टीबाइट एक्सटेंशन को सक्षम करने की आवश्यकता होती है - इसलिए यदि आप कोड वितरित कर रहे हैं, तो आपको अवगत होना होगा कि सभी को यह नहीं होगा।
header('Content-Type: text/html; charset=UTF-8');
या HTML में:
<meta charset="utf-8">
http://www.w3.org/International/O-charset
संपादित करें: PHP6 utf-8 समर्थन, नहीं PHP5 है।
"स्ट्रिंग कार्यों को UTF-8 संगत हैं" । क्या इसका मतलब है कि php5 में strlen utf8 स्ट्रिंग की सही लंबाई लौटाएगा? – lovespring
"PHP5 के रूप में, स्ट्रिंग फ़ंक्शन यूटीएफ -8 संगत हैं।" यह निश्चित रूप से सही नहीं है। PHP के आंतरिक स्ट्रिंग फ़ंक्शन बाइट-लेवल पर काम करते हैं जिसका अर्थ है कि वे बहु-बाइट वर्णों (PHP <6 के लिए मान्य) से निपट नहीं सकते हैं। सभी आंतरिक कार्यों जहां उनके चरित्र के लिए एक वर्ण (बाइट्स में) की लंबाई महत्वपूर्ण है, वे चरित्र सेट के साथ काम करते समय त्रुटि-प्रवण होते हैं। उल्लिखित मल्टीबाइट-एक्सटेंशन (एमबी_ *) में ओवरलोडिंग-क्षमता है लेकिन मैं इसका उपयोग करने के खिलाफ दृढ़ता से सलाह देता हूं। –
मैं वहां से रास्ता था, PHP5 में कोई मल्टीबाइट समर्थन नहीं है। – bucabay
- 1. strlen()?
- 2. mb_strlen() क्या यह पर्याप्त है?
- 3. वेक्टर या मानचित्र, जिसका उपयोग करने के लिए?
- 4. hscurses या ncurses, जिसका उपयोग करने के लिए?
- 5. strlen() जीसीसी
- 6. तेजी से strlen?
- 7. sizeof बनाम strlen
- 8. संकलन समय "strlen()" प्रभावी है?
- 9. टेबललेआउट के लिए नीचे सीमा है जिसका उपयोग सूची दृश्य
- 10. सी तार, strlen और वेलग्रिंड
- 11. मैक्रो/कीवर्ड जिसका उपयोग विधि नाम मुद्रित करने के लिए किया जा सकता है?
- 12. डेटाबेस का उपयोग करने के लिए हाइबरनेट को कॉन्फ़िगर करना, जिसका नाम रनटाइम
- 13. कैसे स्ट्रिंग की लंबाई को खोजने के लिए उद्देश्य सी में strlen का उपयोग
- 14. एंड्रॉइड: सिंगलटन जिसका उपयोग गतिविधि और सेवा
- 15. लूप स्थिति में strlen() का उपयोग सिर्फ शून्य चरित्र की जांच करने से धीमा है?
- 16. क्या कोई ट्रिगर है जिसका उपयोग मैं सीएसएस में फ़ॉलबैक फ़ॉन्ट का उपयोग करने के लिए कर सकता हूं?
- 17. कैसे एक संपत्ति डेटाबेस में जिसका प्रकार सा है परिभाषित करने के लिए?
- 18. नियमित अभिव्यक्तियों का उपयोग करने या नहीं करने के लिए?
- 19. क्या कोई HTML परीक्षण फ़ाइल है जिसका उपयोग मैं सीएसएस रीसेट के लिए कर सकता हूं?
- 20. mysql में डेटा (.sql fle) आयात करने के लिए कैसे करें जिसका आकार 200 एमबी
- 21. राज्य पैटर्न का उपयोग करने या उपयोग करने के लिए?
- 22. जिसका कुंजी मैचों सबस्ट्रिंग
- 23. ईमेल पते की सूची जिसका उपयोग जावास्क्रिप्ट सत्यापन स्क्रिप्ट
- 24. MutationRecord.old क्या कुछ है जिसका उपयोग करना चाहिए?
- 25. ओपनसीवी: आईपीएल इमेज बनाम मैट, जिसका उपयोग करना है?
- 26. प्रोसेल मेल बनाम मेलड्रॉप - जिसका उपयोग करना है?
- 27. फ़ाइलों को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली कुंजी को संग्रहीत करने के लिए
- 28. जीसीसी संकलन त्रुटि: 'strlen' की घोषणा उपलब्ध होनी चाहिए
- 29. क्या विरासत कार्यक्षमता को खाली करने का अच्छा अभ्यास है जिसका उपयोग नहीं किया जाएगा?
- 30. ऑडियोट्रैक, साउंडपूल या मीडियाप्लेयर जिसका उपयोग मैं करना चाहिए?
यूआरएल का एन्कोडिंग रेफरिंग दस्तावेज़ पर भी निर्भर करता है। केवल अगर यूआरएल सीधे स्थान पट्टी में दर्ज किया गया है तो ब्राउजर की सेटिंग्स महत्वपूर्ण हैं। – Gumbo