2010-08-26 18 views
5

मान लें कि मेरे पास एक यादृच्छिक चीनी चरित्र है, 玩। मैं इसे यूनिकोड में परिवर्तित करना चाहता हूं, जो यू +73 ए 9 होगा। मैं इसे सी # में कैसे कर सकता हूं?चीनी चरित्र को यूनिकोड में परिवर्तित करना

+3

यह चीनी चरित्र कहां से आ रहा है? कीबोर्ड से लिखना? डिस्क पर एक फाइल से? उस फ़ाइल में कौन सा कोडपेज या एन्कोडिंग उपयोग किया जाता है? (चीनी सरलीकृत, चीनी पारंपरिक, या ??) आपको यह जानने की जरूरत है कि इनपुट बाइट्स पर एन्कोडिंग का उपयोग करने से पहले आप इसे किसी अन्य एन्कोडिंग में अर्थपूर्ण रूप से रूपांतरित कर सकते हैं। यूटीएफ का उपयोग करते हुए – dthorpe

+0

कुंजीपटल इनपुट (16 मुझे लगता है कि इसमें अधिकांश पात्र होना चाहिए), सरलीकृत या पारंपरिक। – Mass

उत्तर

5

एक चार अपने विशेष वर्ण संदर्भित के रूप में myChar ले लो ...

Console.WriteLine("{0} U+{1:x4} {2}", myChar, (int)myChar, (int)myChar); 

प्रारूप स्ट्रिंग और मानकों उत्पादन केवल "U + ..." कोड को कम करें ...

Console.WriteLine("U+{0:x4}", (int)myChar); 
+0

धन्यवाद, यह कमाल है! क्या आप मुझे कोड समझा सकते हैं? मैं समझता हूं कि आप सिर्फ यू + लिख रहे हैं, लेकिन '{0: x4}' क्या है? मुझे पता है कि उनमें से एक कुछ विशिष्ट है, तो 'x4' क्या है? – Mass

+2

'x4' इसे हेक्स (एक्स) के रूप में आउटपुट करता है, बाईं ओर 4 अंकों शून्य गद्देदार होता है। – Chris

+0

धन्यवाद! (15 वर्ण ...) – Mass

2

characater 玩 यूनिकोड में है।

यदि आपके पास यह सी # के रूप में है, तो यह वर्तमान में यूटीएफ -16 में है, जो यूनिकोड एन्कोडिंग रूपों में से एक है। बाइट (द्वारा एक धारा अच्छा है लिपटे) जाओ

  1. एन्कोडिंग उस में है का पता लगाएं
  2. :

    आप कहीं और से प्राप्त करने रहे हैं, तो आप की जरूरत है।।

  3. एक उपयुक्त एनकोडर लिखने के लिए प्राप्त करें।
  4. स्ट्रिंग प्राप्त करने के लिए एन्कोडर का उपयोग करें (टेक्स्ट स्ट्रीमर के साथ अच्छी स्ट्रीम लपेटना अच्छा है)।

चरण 3 सरल (ओह, मैं सिर्फ का उपयोग करें कि एक!) या मुश्किल हो सकता है (रफ़ू, इसे अपने आप को लिखने के लिए है!) या कहीं बीच में (हे, किसी को भी इनमें से किसी एक को पहले से ही लिखा ?!)

ऊपर हम चरित्र ही यूनिकोड कोड बिंदु के बाद और फिर पूर्णांक मान outputting हो
+0

मेरा मतलब है कि मैं चरित्र को यू + 73 ए 9 – Mass

+0

चार सी = '\ u73a9' में बदलना चाहता हूं; –

+0

@ ग्रेग- धन्यवाद, लेकिन मैं इसे दूसरी तरफ चाहता हूं। मुझे कुछ चाहिए जैसे 玩 -> \ u73a9 – Mass

0

थोड़ा अधिक समय उदाहरण के लिए, कि जॉन हैना के जवाब में पैटर्न इस प्रकार है:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace UnicodeDecodeConsoleApplication 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      char c = '\u73a9'; 
      char[] chars = {c}; 
      Encoding encoding = Encoding.BigEndianUnicode; 
      byte[] decodeds = encoding.GetBytes(chars); 
      StringBuilder stringBuilder = new StringBuilder("U+"); 
      foreach (byte decoded in decodeds) 
      { 
       stringBuilder.Append(decoded.ToString("x2")); 
      } 
      Console.WriteLine(stringBuilder); 
      Console.ReadLine(); 
     } 
    } 
} 

--jeroen

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