दिलचस्प पोस्ट
MySQL: त्रुटि कोड: 1118 पंक्ति का आकार बहुत बड़ा (> 8126)। कुछ कॉलम को टेक्स्ट या ब्लॉब में बदलना IOS में NSDictionary से JSON स्ट्रिंग जेनरेट करें Google API क्लाइंट के साथ टोकन को रीफ्रेश करने का तरीका क्या है? java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent () Ljava / lang / string सी ++ में "अनुवाद इकाई" क्या है आर: 4 डी प्लॉट, एक्स, वाई, जेड, रंग समूह एक ही सेल में एक ही मान फ़ील्ड का समूह किसी एप्लिकेशन या प्रक्रिया के वास्तविक मेमोरी उपयोग को कैसे मापें? आईफ़ोन: डिफ़ॉल्ट रूप से UITableView खोज बार छुपाएं Xcode 4 स्थैतिक लाइब्रेरी निर्भरता से सार्वजनिक हेडर फाइलों को नहीं ढूँढ सकता प्रतिबिंब के द्वारा मैं एक प्रकार के सभी स्थिरांक कैसे प्राप्त करूं? जावा में एन्कोडिंग रूपांतरण मैं एक स्ट्रिंग कैसे यूआरएल सांकेतिक शब्दों में बदलना है पांडा: श्रृंखलन कार्य शून्य के लिए PHP जांच

"सामग्री-प्रकार: एप्लिकेशन / जेएसन; charset = utf-8 "वास्तव में मतलब है?

जब मैं अपनी आरएएसटी सेवा में एक JSON बॉडी के साथ एक पोस्ट अनुरोध करता हूं, तो मैं इसमें Content-type: application/json; charset=utf-8 संदेश शीर्षलेख में Content-type: application/json; charset=utf-8 इस शीर्षलेख के बिना, मुझे सेवा से एक त्रुटि मिलती है मैं सफलतापूर्वक Content-type: application/json उपयोग कर सकते हैं Content-type: application/json बिना ;charset=utf-8 भाग।

charset=utf-8 क्या करता है? मुझे पता है कि यह वर्ण एन्कोडिंग निर्दिष्ट करता है लेकिन सेवा इसके बिना ठीक काम करती है क्या इस एन्कोडिंग में वर्णों को सीमित किया जा सकता है जो संदेश के शरीर में हो सकता है?

Solutions Collecting From Web of ""सामग्री-प्रकार: एप्लिकेशन / जेएसन; charset = utf-8 "वास्तव में मतलब है?"

शीर्ष लेख सिर्फ यह दर्शाता है कि सामग्री को किस प्रकार एन्कोड किया गया है। सामग्री से सामग्री का प्रकार निकालना संभव नहीं है, यानी आप केवल सामग्री को देखना न भूलें और इसके साथ क्या करना है यह जान सकते हैं। यही HTTP हेडर हैं, वे प्राप्तकर्ता को बताते हैं कि वे किस तरह की सामग्री (अनुमानतः) से निपटते हैं।

Content-type: application/json; charset=utf-8 Content-type: application/json; charset=utf-8 सामग्री को JSON स्वरूप में निर्दिष्ट करता है, जो यूटीएफ -8 कैरेक्टर एन्कोडिंग में एन्कोड किया गया है। जेएसओएन के लिए डिफ़ॉल्ट (केवल?) एन्कोडिंग यूटीएफ -8 है, क्योंकि एन्कोडिंग को निर्दिष्ट करना जेसनॉन के लिए कुछ बेमानी है। इसलिए इस मामले में, प्राप्तकर्ता सर्वर जाहिर है कि यह जानकर खुश है कि यह JSON के साथ काम कर रहा है और मानता है कि एन्कोडिंग डिफ़ॉल्ट रूप से यूटीएफ -8 है, यही कारण है कि यह हेडर के साथ या बिना काम करता है।

क्या इस एन्कोडिंग में वर्णों को सीमित किया जा सकता है जो संदेश के शरीर में हो सकता है?

नहीं, आप हेडर और शरीर में कुछ भी भेज सकते हैं। लेकिन, अगर दोनों मेल नहीं खाते हैं, तो आपको गलत परिणाम मिल सकते हैं। यदि आप शीर्षक में निर्दिष्ट करते हैं कि सामग्री UTF-8 एन्कोडेड है लेकिन आप वास्तव में लैटिन 1 एन्कोडेड सामग्री भेज रहे हैं, तो रिसीवर कचरा डेटा का उत्पादन कर सकता है, लैटिन 1 एन्कोडेड डेटा को यूटीएफ -8 के रूप में परिभाषित करने की कोशिश कर रहा है। यदि निश्चित रूप से आप यह निर्दिष्ट करते हैं कि आप लैटिन 1 एन्कोडेड डेटा भेज रहे हैं और आप वास्तव में ऐसा कर रहे हैं, तो हाँ, आप लैटिन 1 में एन्कोड कर सकते हैं 256 वर्णों तक सीमित हैं।

@ चेतना के दावे को सिद्ध करने के लिए कि डिफ़ॉल्ट JSON एन्कोडिंग UTF-8 है …

आईईटीएफ आरएफसी 4627 से :

JSON पाठ को यूनिकोड में एन्कोड किया जाएगा डिफ़ॉल्ट एन्कोडिंग UTF-8 है

चूंकि JSON पाठ के पहले दो अक्षर हमेशा ASCII वर्ण होंगे [RFC0020], यह निर्धारित करना संभव है कि क्या एक ओक्टैट स्ट्रीम UTF-8, UTF-16 (BE या LE) या यूटीएफ -32 (बीई या ले) पहले चार ऑक्टेट में नल के पैटर्न को देखते हुए।

  00 00 00 xx UTF-32BE 00 xx 00 xx UTF-16BE xx 00 00 00 UTF-32LE xx 00 xx 00 UTF-16LE xx xx xx xx UTF-8 

ध्यान दें कि IETF RFC4627 को IETF RFC 7158 द्वारा स्थान दिया गया है अनुभाग में [8.1] इससे पहले ड्यूड द्वारा लिखित पाठ को पुनः कहा जा रहा है:

 Implementations MUST NOT add a byte order mark to the beginning of a JSON text.