मुझे यकीन है कि मैं वास्तव में अपने प्रश्न समझ में अगर नहीं हूँ।
नेट में, आप तो एक स्ट्रिंग वस्तु है जब आप विभिन्न एन्कोडिंग के बारे में परवाह करने की जरूरत नहीं। सभी .NET तार एक ही एन्कोडिंग का उपयोग करते हैं: यूनिकोड (या अधिक सटीक: यूटीएफ -16)।
विभिन्न पाठ्य एनकोडिंग्स केवल भूमिका निभाते हैं, जब आप एक बाइट क्रम में एक स्ट्रिंग वस्तु बारी (जैसे किसी पाठ फ़ाइल में यह लिखने के लिए) या ठीक इसके विपरीत। मुझे लगता है कि आप इसके बारे में बात कर रहे हैं। एक से दूसरे एन्कोडिंग से एक बाइट क्रम बदलने के लिए, आप लिख सकते हैं:
byte[] input = ReadInput(); // e.g. from a file
Encoding decoder = Encoding.GetEncoding("encoding of input");
string str = decoder.GetString(input);
Encoding encoder = Encoding.GetEncoding("encoding of output");
byte[] ouput = encoder.GetBytes(str);
बेशक आप उचित इनकोडिंग नाम के साथ encoding of input
और encoding of output
को बदलने के लिए की जरूरत है। एमएसडीएन में list of all supported encodings है।
आप या तो प्रथा के अनुसार या मेटाडाटा या कुछ और पर आधारित है, इनपुट की एन्कोडिंग जानना चाहते हैं। आप किसी अज्ञात एन्कोडिंग को विश्वसनीय रूप से निर्धारित/अनुमानित नहीं कर सकते हैं, लेकिन कुछ चाल और हेरिस्टिक हैं जिन्हें आप लागू कर सकते हैं। How can I detect the encoding/codepage of a text file देखें।
संपादित करें:
"U + xxxx" कैसे आप आमतौर पर (संख्या यूनिकोड वर्ण को सौंपना) एक विशिष्ट यूनिकोड कोड बिंदु का उल्लेख किया जाता है, जैसे कि पत्र "ए" (लैटिन राजधानी ए) का कोड बिंदु यू + 0041 है।
क्या आपकी इनपुट स्ट्रिंग वास्तव में "\\U+1043...
" (बैकस्लैश, बैकस्लैश, पूंजी यू इत्यादि) है या यह केवल इस तरह प्रदर्शित होती है। एक डीबगर खिड़की में? या वर्ण को जानबूझ कर एक भाग निकले तरीका उन्हें लिखने के लिए बचाया गया: यदि यह तो पहली है किसी को है, जबकि, पाठ एन्कोडिंग शायद एक यूनिकोड शाब्दिक लिखने की कोशिश कर और गलती से एक दूसरा (EDIT2 लिख कर बैकस्लैश से बचने के द्वारा एक गलती की है एक ASCII- एन्कोडेड फ़ाइल/स्ट्रीम/आदि में)। जहां तक मुझे पता है, .NET एन्कोडिंग कक्षाएं आपकी मदद नहीं करती हैं; आपको हाथ से स्ट्रिंग को पार्स करने की आवश्यकता है।
वैसे, आपके उदाहरण की संख्या अजीब है। मानक नोटेशन में, "यू +" के बाद संख्या एक हेक्स संख्या है, दशमलव संख्या नहीं। लेकिन यदि आप हेक्स संख्याओं के रूप में कोड पॉइंट पढ़ते हैं तो वे पूरी तरह से असंबंधित स्क्रिप्ट सिस्टम (बर्मी, जॉर्जियाई मखेड्रुली, हंगुल जामो) के पात्रों को संदर्भित करते हैं; दशमलव संख्या के रूप में पढ़ें, हालांकि वे सभी सिरिलिक अक्षरों को संदर्भित करते हैं।
Edit3: उसे पार्स करने के लिए, अच्छी तरह से, प्रपत्र \\U+xxxx
में सबस्ट्रिंग के लिए देखो, एक पूर्णांक n
करने के लिए xxxx
कनवर्ट करते हैं, कि कोड बिंदु (Char.ConvertFromUtf32(n)
) के साथ एक चार बनाने (एक्स अंक के होने के साथ) और पूरे की जगह उस char द्वारा सबस्ट्रिंग।
क्या आप जानते हैं कि फ़ाइल या फ़ाइल का हिस्सा सफल रूपांतरण के बाद क्या होना चाहिए? – Jodrell
विदेशी द्वारा, क्या आपका मतलब कुछ अन्य अज्ञात एन्कोडिंग – Jodrell
> विदेशी द्वारा है, क्या आपका मतलब कुछ अन्य अज्ञात एन्कोडिंग हाँ – psct