2010-08-26 153 views
5

假設我有一個隨機中文字符,玩。我想將它轉換爲Unicode,這將是U + 73A9。我怎麼能在C#中做到這一點?將漢字轉換爲Unicode

+3

這個漢字來自哪裏?鍵盤輸入?從磁盤上的文件?該文件中使用了哪些代碼頁或編碼? (簡體中文,繁體中文或??)你需要知道在輸入字節上使用什麼編碼,然後纔能有意義地將其轉換爲其他編碼。 – dthorpe 2010-08-26 02:05:34

+0

鍵盤輸入,使用UTF(16我猜,應該有大部分字符),簡體或傳統。 – Mass 2010-08-26 02:38:17

回答

5

採取myChar作爲一個char引用您的特殊字符...

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

上面我們輸出其次是Unicode代碼點字符本身,然後整數值。

減少格式字符串和參數,只輸出「U + ......」的代碼...

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

謝謝,這真棒!你能向我解釋代碼嗎?我知道你只是寫U +,但是什麼是'{0:x4}'?我知道其中一個是一個說明符,那麼':x4'是什麼? – Mass 2010-08-26 04:00:46

+2

'x4'將其輸出爲十六進制(x),4位零填充在左側。 – Chris 2010-08-26 04:16:31

+0

謝謝! (15個字符...) – Mass 2010-08-26 04:30:14

2

該characater玩是在Unicode。

如果你在C#中使用它作爲玩,那麼它現在是UTF-16,這是Unicode編碼形式之一。

如果是從別的地方獲得它,你需要:

  1. 查找編碼它是
  2. 獲取字節(由流是不錯的包裹)。
  3. 獲取寫入適當的編碼器。
  4. 使用編碼器來獲取字符串(用文本閱讀器包裝漂亮的流更好)。

第三步可能是簡單的(哦,我只是用一個!)或硬(織補,必須把它寫我自己!)或介於兩者之間(嘿,任何人寫的其中之一已?)

+0

我的意思是我想把字符變成U + 73A9 – Mass 2010-08-26 02:40:06

+0

char c ='\ u73a9'; – 2010-08-26 02:47:43

+0

@格雷格感謝,但我想要相反。我想要的東西像玩 - > \ u73a9 – Mass 2010-08-26 02:50:32

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