2009-06-15 11 views
33

Benim durumda C#onun kodundan unicode dize alınıyor - Aşağıdaki biliyorum C#

string unicodeString = "\u0D15"; 

unicode kullanmak yoludur, ben derleme zamanında karakter kodu (0D15) almazsınız. Bunu çalışma zamanında bir XML dosyasından alıyorum. Bu kodu nasıl unicode dizeye çeviririm acaba? Aşağıdaki durumu denedim: Bu durumu nasıl ele alabilirim?

Herhangi bir yardım harika olurdu!

cevap

49

char.ConvertFromUtf32 işlevini kullanmak istiyorsunuz.

string codePoint = "0D15"; 

int code = int.Parse(codePoint, System.Globalization.NumberStyles.HexNumber); 
string unicodeString = char.ConvertFromUtf32(code); 
// unicodeString = "ക" 
+0

Microsoft'un yeniden gösterilmesi, gerçek metin kodlamaları ile unicode'un kendisi arasındaki farkı bilmemektedir ... – Nyerguds

+0

Bir UTF-16 vekilini ilettiğinizde atar. – CodesInChaos

4

İşte bir NUnit testi gösteren Arul var ve Adrian'ın çözüm - diğer solüsyon ile giriş sadece char içinde başlar iken bir çözüm, bir dizede girişi ile başlar unutmayın.

[Test] 
    public void testConvertFromUnicode() 
    { 

     char myValue = Char.Parse("\u0D15"); 
     Assert.AreEqual(3349, myValue); 

     char unicodeChar = '\u0D15'; 
     string unicodeString = Char.ConvertFromUtf32(unicodeChar); 
     Assert.AreEqual(1, unicodeString.Length); 
     char[] charsInString = unicodeString.ToCharArray(); 
     Assert.AreEqual(1, charsInString.Count()); 
     Assert.AreEqual((int) '\u0D15', charsInString[0]); 
    } 
1
bir character reference kullanarak xml karakteri Kaçış

:

<Config value="&#x0D15;" /> 

O C# 'ın xml ayrıştırıcı tarafından düzgün okumak alacak (en azından XElement.Load()).