2010-01-11 12 views
5

हाय प्रोग्रामिंग और नेटवर्क विकास में एक शुरुआतकर्ता है। मेरे पास ASCII और यूनिकोड एन्कोडिंग के बारे में एक प्रश्न है।सी # एएससीआईआई या यूनिकोड

MSDN और अन्य वेब उदाहरण में निम्नलिखित है:

byte[] byteData = Encoding.ASCII.GetBytes(data); 

इस वजह से इन कोड नमूने वर्ष कर रहे हैं? यह नहीं होना चाहिए:

byte[] byteData = Encoding.Unicode.GetBytes(data); 

आपके इनपुट के लिए धन्यवाद!

उत्तर

10

यह निर्भर करता है - क्या आप परिणाम ASCII या UTF-16 में चाहते हैं? जब आप दूसरे चाहते हैं तो प्रत्येक गलत होता है।

यदि आप कुछ नेटवर्क प्रोटोकॉल की बात कर रहे हैं, तो आप प्रोटोकॉल द्वारा कौन सी वर्ण एन्कोडिंग की अपेक्षा की जानी चाहिए। गलत एन्कोडिंग का प्रयोग करें, और खराब चीजें हो जाएंगी।

बेशक एएससीआईआई के पास भारी प्रतिबंध हैं - यह बहुत अंग्रेजी आधारित है (लैटिन वर्ण केवल, कोई उच्चारण नहीं है) लेकिन यह कुछ प्रोटोकॉल के लिए सही है। अन्य यूटीएफ -16 (एन्कोडिंग। यूनिकोड), यूटीएफ -8 या अन्य एन्कोडिंग का उपयोग कर सकते हैं ... या वे आपको प्रोटोकॉल के भीतर एन्कोडिंग निर्दिष्ट करने देंगे।

+0

क्लाइंट/सर्वर के दोनों तरफ कार्यान्वित कर रहा हूं, इसलिए मुझे निर्णय लेना है। यूनिकोड को पसंद के रूप में देख रहा हूं क्योंकि यह विभिन्न भाषाओं को समायोजित करने में सक्षम है। शायद मैं गलत हो सकता हूँ! – iTEgg

+7

@ikurtz: मैं ज्यादातर चीजों के लिए यूनिकोड के बजाय यूटीएफ -8 का उपयोग करने का सुझाव दूंगा, क्योंकि यह आमतौर पर * यातायात पर कटौती करता है। इसके लिए अपवाद हैं (सुदूर पूर्व वर्ण अक्सर यूटीएफ -8 में बड़े होते हैं) और अन्य डाउनसाइड्स हैं (आप कोड बिंदुओं की संख्या से सीधे बाइनरी डेटा के आकार की गणना नहीं कर सकते हैं) लेकिन यह आमतौर पर आईएमओ का एक अच्छा विचार है । –

+0

संदेश आकार प्राप्त करने से संबंधित बहुत अच्छा बिंदु! मैं समझता हूं कि वे ASCII का उपयोग क्यों करते हैं। – iTEgg

संबंधित मुद्दे