C#全形和半形轉換

來源:互聯網
上載者:User
C#全形和半形轉換

在電腦螢幕上,一個漢字要佔兩個英文字元的位置,人們把一個英文字元所佔的位置稱為"半形",相對地把一個漢字所佔的位置稱為"全形"。在漢字輸入時,系統提供"半形"和"全形"兩種不同的輸入狀態,但是對於英文字母、符號和數字這些通用字元就不同於漢字,在半形狀態它們被作為英文字元處理;而在全形狀態,它們又可作為中文字元處理。半形和全形切換方法:單擊IME工具條上的 按鈕或按鍵盤上的Shift+Space鍵來切換。
(1)全形--指一個字元佔用兩個標準字元位置。
漢字字元和規定了全形的英文字元及國標GB2312-80中的圖形符號和特殊字元都是全形字元。一般的系統命令是不用全形字元的,只是在作文文書處理時才會使用全形字元。
(2)半形--指一字元佔用一個標準的字元位置。
通常的英文字母、數字鍵、符號鍵都是半形的,半形的顯示內碼都是一個位元組。在系統內部,以上三種字元是作為基本代碼處理的,所以使用者輸入命令和參數時一般都使用半形。
B 全形與半形各在什麼情況下使用?
全形佔兩個位元組,半形佔一個位元組。
半形全形主要是針對標點符號來說的,全形標點佔兩個位元組,半形佔一個位元組,而不管是半形還是全形,漢字都還是要佔兩個位元組。
在編程式的原始碼中只能使用半形標點(不包括字串內部的資料)
在不支援漢字等語言的電腦上只能使用半形標點(其實這種情況根本就不存在半形全形的概念)
對於大多數字型來說,全形看起來比半形大,當然這不是本質區別了。
C 全形和半形的區別
全形就是字母和數字等與漢字占等寬位置的字。半形就是ASCII方式的字元,在沒有漢字IME起做用的時候輸入的字母數字和字元都是半形的。
在漢字IME出現的時候,輸入的字母數字預設為半形,但是標點則是預設為全形,可以通過滑鼠點擊IME工具條上的相應按鈕來改變。
D 關於“全形”和“半形”:
全形:是指中GB2312-80(《資訊交換用漢字編碼字元集·基本集》)中的各種符號。
半形:是指英檔案ASCII碼中的各種符號。

        /// 轉全形的函數(SBC case)
        ///
        ///任一字元串
        ///全形字元串
        ///
        ///全形空格為12288,半形空格為32
        ///其他字元半形(33-126)與全形(65281-65374)的對應關係是:均相差65248
        ///
        public static String ToSBC(String input)
        {
            // 半形轉全形:
            char[] c = input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i] == 32)
                {
                    c[i] = (char)12288;
                    continue;
                }
                if (c[i] < 127)
                    c[i] = (char)(c[i] + 65248);
            }
            return new String(c);
        }

        /**/
        // /
        // / 轉半形的函數(DBC case)
        // /
        // /任一字元串
        // /半形字元串
        // /
        // /全形空格為12288,半形空格為32
        // /其他字元半形(33-126)與全形(65281-65374)的對應關係是:均相差65248
        // /
        public static String ToDBC(String input)
        {
            char[] c = input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i] == 12288)
                {
                    c[i] = (char)32;
                    continue;
                }
                if (c[i] > 65280 && c[i] < 65375)
                    c[i] = (char)(c[i] - 65248);
            }
            return new String(c);
        }

        [TestMethod]
        public void DBCTEST()
        {
            string strSBC = "中華1259test";
            string result = ToDBC(strSBC);
            Console.WriteLine(result);
            Assert.AreEqual(result,"中華1259test");
        }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.