2013年3月15日

C#中文字轉換Unicode(\u )

我們有時候會需要以UTF-8來表示中文字,像是網址或是Javascript裡,以下是相關的範例

中文轉UTF-8(\uXXXX)
UTF-8轉中文
void Main()
{
 /**
 * @name StringToUnicode
 *
 * String To Unicode
 * Unicode to String
 */

    //中文轉UTF-8
 Console.WriteLine(StringToUnicode("鍵"));
 //UTF-8 轉中文
    Console.Write(UnicodeToString(@"\u9375"));
}
 private string StringToUnicode(string srcText)
 {
 string dst = "";
 char[] src = srcText.ToCharArray();
 for (int i = 0; i < src.Length; i++)
 {
 byte[] bytes = Encoding.Unicode.GetBytes(src[i].ToString());
 string str = @"\u" + bytes[1].ToString("X2") + bytes[0].ToString("X2");
 dst += str;
 }
 return dst;
 }

private string UnicodeToString(string srcText)
{
 string dst = "";
 string src = srcText;
 int len = srcText.Length / 6;

 for (int i = 0; i <= len - 1; i++) 
 { 
  string str = ""; 
  str = src.Substring(0, 6).Substring(2); 
  src = src.Substring(6); 
  byte[] bytes = new byte[2]; 
  bytes[1] = byte.Parse(int.Parse(str.Substring(0,2),System.Globalization.NumberStyles.HexNumber).ToString()); 
  bytes[0] = byte.Parse(int.Parse(str.Substring(2, 2),System.Globalization.NumberStyles.HexNumber).ToString()); 
  dst += Encoding.Unicode.GetString(bytes);
 } 
 return dst; 
} 

沒有留言:

張貼留言