Unicode的中文Code Point範圍

在寫程式的時候,遇到了一狀況,
是需要判斷特定字串的每一個字屬於中文、英文或符號。
想到或許可以從Unicode的Code Point著手,

大致上的作法是,
1. 先確認中文字的code points範圍
2. 判斷特定字串中的每個字元所對應的code point
3. 對特定字串做處理

這篇文章則是針對第一點和第二點做說明。

首先是Unicode中文範圍,
網路上找到的文章大部份提到的中文範圍是U+4E00 ~ U+9FA5,
這篇文章更詳細,把不同的Unicode版本也標上去。

接下來則是寫一個小程式測試字串對應的code point。
底下

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

namespace Console
{
    class Program
    {
        static void Main(string[] args)
        {
            //假設特定字串如下
              string subject = "??  國文(一) Web Development 網路發展";
            char[] charArr = subject.ToCharArray();

            for (int counter = 0; counter < charArr.Length; counter++)
            {
                int intValue = Convert.ToInt32(charArr[counter]);
                string strHex = String.Format("{0:X}", intValue);
                System.Console.WriteLine("字元: {0}, 十進位: {1}, 十六進位: {2}", charArr[counter].ToString(), intValue, strHex);
            }

            System.Console.Read();
        }
    }
}

執行的結果如下,

程式碼說明:
設定的字串裡,有中文、英文、空白,還有全形中文。
.NET的Unicode是UTF-16,而字元是以System.Char結構呈現。
Char是對應到16位元的數值,十六進位的範圍是0x0000 ~ 0xffff。
詳細內容請看這裡

程式把字串轉為字元陣列後,顯示每個字元的十進位和十六進位。
從執行的超果可以看到,中文「一」的十六進位是4E00,
正好是中文code point的開頭。

以上,做為記錄。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s