हाल ही में मैंने ब्राउज़र समर्थन के साथ डेटा गुणवत्ता के कारण एक बग मारा, और जब तक आवश्यक हो, मैं डबल आकार के बिना स्ट्रिंग से बचने के लिए एक सुरक्षित नियम ढूंढ रहा हूं।यूनिकोड वर्णों की सूची जिन्हें आउटपुट में फ़िल्टर किया जाना चाहिए?
एक यूटीएफ -8 बाइट अनुक्रम "ई 2-80-ए 8" (यू +2028, लाइन SEPARATOR), यूनिकोड डेटाबेस में एक बिल्कुल मान्य चरित्र है। हालांकि, यह अनुक्रम एक रेखा-विभाजक का प्रतिनिधित्व करता है (हां, अन्य तो "0 ए")।
और बुरी तरह से, क्रोम, फ़ायरफ़ॉक्स और सफारी समेत कई ब्राउज़र; मैंने दूसरों का परीक्षण नहीं किया), जेएसओएनपी कॉलबैक को संसाधित करने में असफल रहा जिसमें एक स्ट्रिंग है जिसमें यूनिकोड चरित्र शामिल है। JSONP को एक गैर-यूनिकोड HTML द्वारा शामिल किया गया था जिसका मेरा कोई नियंत्रण नहीं था।
ब्राउज़र ने ऐसी जावास्क्रिप्ट पर केवल INVALID कोड/वाक्यविन्यास त्रुटि की सूचना दी जो डीबग टूल और सभी टेक्स्ट संपादकों से मान्य दिखता है। मुझे लगता है कि यह "E2-80-A8" को BIG-5 में परिवर्तित करने का प्रयास कर सकता है और जेएस सिंटैक्स तोड़ सकता है।
उपर्युक्त केवल उदाहरण है कि यूनिकोड आपके सिस्टम को अप्रत्याशित रूप से कैसे तोड़ सकता है। जहां तक मुझे पता है, कुछ हैकर आरटीएल और अन्य नियंत्रण पात्रों का उपयोग उनके अच्छे के लिए कर सकते हैं। और यूनिकोड विनिर्देश में कई "उद्धरण", "रिक्त स्थान", "प्रतीकों" और "नियंत्रण" हैं।
प्रश्न:
वहाँ हर प्रोग्रामर छिपा विशेषताएं (और कीड़े) जो हम उन्हें हमारे आवेदन में प्रभावी नहीं चाहते हो सकता है के बारे में पता करने के लिए यूनिकोड वर्ण की एक सूची है। (उदाहरण के लिए फ़ाइल फ़ाइल नाम में आरटीएल अक्षम)।
संपादित करें:
मैं JSON है और न ही जावास्क्रिप्ट के लिए पूछ नहीं कर रहा हूँ। मैं सभी कार्यक्रमों में यूनिकोड हैंडिंग के सामान्य सर्वोत्तम अभ्यास के लिए पूछ रहा हूं।
के लिए ICU project पर एक नज़र डालें। जब ब्राउज़र जेएसओएन की गलत व्याख्या करते हैं, जिसका एन्कोडिंग स्पष्ट रूप से यूटीएफ -8 है, एक अलग एन्कोडिंग के रूप में, गलती ब्राउज़र के साथ होती है; और * वे * तय किया जाना चाहिए। जेएसओएन को जोड़ना समाधान नहीं है। – daxim