के वर्ण एन्कोडिंग का पता लगाना मैं एक वेब सेवा बना रहा हूं और एक नोड है जो एक नया संसाधन बनाने के लिए पोस्ट स्वीकार करता है। संसाधन दो सामग्री-प्रकारों में से एक की अपेक्षा करता है - एक एक्सएमएल प्रारूप जिसे मैं परिभाषित कर दूंगा, या फॉर्म-एन्कोडेड चर।HTTP POST अनुरोध
विचार यह है कि उपभोग करने वाले अनुप्रयोग सीधे एक्सएमएल पोस्ट कर सकते हैं और बेहतर सत्यापन आदि से लाभ प्राप्त कर सकते हैं, लेकिन एक HTML इंटरफ़ेस भी है जो फॉर्म-एन्कोडेड सामग्री पोस्ट करेगा। स्पष्ट रूप से एक्सएमएल प्रारूप में एक वर्णमाला घोषणा है, लेकिन मैं नहीं देख सकता कि मैं पोस्ट को देखने से फ़ॉर्म के अक्षरसेट का पता कैसे लगाता हूं।
फ़ायरफ़ॉक्स से फार्म के लिए एक विशिष्ट पद इस तरह दिखता है:
POST /path HTTP/1.1
Host: www.myhostname.com
User-Agent: Mozilla/5.0 [...etc...]
Accept: text/html,application/xhtml+xml, [...etc...]
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 41
field1=value1&field2=value2&field3=value3
कौन सा वर्ण सेट के किसी भी उपयोगी संकेत को रोकने के लिए प्रतीत नहीं होता।
जो मैं देख सकता हूं, एप्लिकेशन/एक्स-www-form-urlencoded प्रकार पूरी तरह से HTML में परिभाषित किया गया है, जो केवल% -encoding नियम बताता है, लेकिन डेटासेट के डेटासेट के बारे में कुछ भी नहीं कहता में
असल में, क्या चरित्र सेट को बताने का कोई तरीका है यदि मुझे मूल रूप से प्रस्तुत किए गए HTML सेट वाले चरित्र को नहीं पता है? अन्यथा मुझे वर्ण सेट के आधार पर चरित्र सेट को आजमाने और अनुमान लगाने की आवश्यकता होगी, और जो कुछ मैं बता सकता हूं उससे हमेशा थोड़ा सा है।
यहाँ कई बारीकियों और व्यवहार ब्राउज़र और ऑपरेटिंग द्वारा अलग अलग होंगे रहे हैं प्रणाली। आईई द्वारा उपयोग किया जाने वाला एक सम्मेलन यह है कि यदि आपके पास '_charset_' नाम से छुपा हुआ इनपुट है, तो IE उस फ़ील्ड को उस अक्षर सेट के साथ भर देगा जो फ़ॉर्म सबमिट करते समय उपयोग किया जाता है। यह भी संबंधित प्रश्न देखें http://stackoverflow.com/questions/12830546/accept-charset-utf-8-parameter-doesnt-do-anything-when-used-in-form – EricLaw