यह अच्छी तरह से ज्ञात है कि utf-8 फ़ाइल संग्रहण और नेटवर्क परिवहन के लिए सबसे अच्छा काम करता है। लेकिन लोग बहस करते हैं कि प्रसंस्करण के लिए utf-16/32 बेहतर है या नहीं। एक प्रमुख तर्क यह है कि utf-16 अभी भी परिवर्तनीय लंबाई है और यहां तक कि utf-32 प्रति चरित्र एक कोड-पॉइंट नहीं है, तो वे utf-8 से बेहतर कैसे हैं? मेरी राय यह है कि utf-16 एक बहुत अच्छा समझौता है।
सबसे पहले, बीएमपी के बाहर के पात्रों को यूटएफ -16 में डबल कोड-पॉइंट की आवश्यकता होती है, जिनका उपयोग शायद ही कभी किया जाता है। उस सीमा में चीनी वर्ण (कुछ अन्य एशिया वर्ण भी) मूल रूप से मृत हैं। साधारण लोग उन्हें बिल्कुल उपयोग नहीं करेंगे, सिवाय इसके कि विशेषज्ञों को प्राचीन पुस्तकों को डिजिटल बनाने के लिए उनका उपयोग करें। तो, यूटीएफ -32 ज्यादातर समय बर्बाद हो जाएगा। उन पात्रों के बारे में ज्यादा चिंता न करें, क्योंकि यदि आप सॉफ़्टवेयर उन विशेष उपयोगकर्ताओं के लिए नहीं हैं, तब तक वे आपके सॉफ़्टवेयर को खराब तरीके से संभाल नहीं पाएंगे।
दूसरा, अक्सर हमें चरित्र गणना से संबंधित स्ट्रिंग मेमोरी आवंटन की आवश्यकता होती है। जैसे 10 अक्षरों के लिए डेटाबेस स्ट्रिंग कॉलम (मान लें कि हम सामान्यीकृत रूप में यूनिकोड स्ट्रिंग स्टोर करते हैं), जो utf-16 के लिए 20 बाइट्स होगा। ज्यादातर मामलों में यह इस तरह काम करेगा, चरम मामलों को छोड़कर इसमें केवल 5-8 वर्ण होंगे। लेकिन यूटीएफ -8 के लिए, पश्चिमी चरित्रों के लिए एक चरित्र की सामान्य बाइट लंबाई 1-3 है और एशिया भाषाओं के लिए 3-5 है। जिसका मतलब है कि हमें आम मामलों के लिए भी 10-50 बाइट की जरूरत है। अधिक डेटा, अधिक प्रसंस्करण।
यूटीएफ -8 का समर्थन नहीं करने वाले मौजूदा प्रोटोकॉल के लिए, यह यूटीएफ -8 का उपयोग न करने का एक अच्छा कारण है :) मैं व्यक्तिगत रूप से केवल यूटीएफ -8 एन्कोडिंग का समर्थन करना चाहता हूं क्योंकि यह मेरे जीवन को चारों ओर घूमने की अनुमति देते हुए यूनिकोड वर्णों की अनुमति देता है एएससीआईआई चरित्र-स्थान (एक "गूंगा" संपादक में यूटीएफ -16 सामग्री खोलने से मुझे आंखें खून बहती हैं)। –
@pst: बी ई सी ए यू एस आई आई टी ओ ओ एस एस एल आई के ई टी एच आई एस? – dan04