[C#] 將Unicode編號與字串間互相轉換

  • 10632
  • 0

摘要:[C#] 將Unicode編號與字串間互相轉換

如果不知道什麼是Unicode的朋友可以去Wiki一下,簡單說就是目前各國所有文字的對照碼。

要知道一個Unicode字以兩個byte組成,在C#中預設就有Encoding.Unicode有一系列的轉換方法可以用

那就廢話不多說,首先看看Unicode轉string怎麼做

以Wiki的繁體字"葉"為例,葉的Unicode是"8449"

 

string text = "8449";
byte[] bytes = new byte[2];
bytes[1] = Convert.ToByte(text.Substring(0, 2), 16);
bytes[0] = Convert.ToByte(text.Substring(2, 2), 16);
string result = Encoding.Unicode.GetString(bytes);

 

輸入的是Unicode 16進位字串,所以需要先轉成10進位存成byte

要特別注意的是,Unicode是從後面讀回來,兩個byte需要顛倒過來,所以我先放bytes[1]再放bytes[0],

最後就可以叫GetString方法傳出結果了。

 

 

如果是string轉Unicode的話

 

bytes = Encoding.Unicode.GetBytes("葉");
string result = String.Format("{0:X}", bytes[1]) + String.Format("{0:X}", bytes[0]);

 

就只是顛倒過來而已。

 

 

在C#中這些轉換的動作其實都不算難,因為已經有完整的類別方法可以用,

麻煩的反而是字串、byte、16進位等等互相間轉換時,如果沒有清楚的觀念可能就會鬼打牆

希望這篇能幫上有需要的人