全角转半角与半角转全角

1.全角:指一个字符占用两个标准字符位置。汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。

2.半角:指一字符占用一个标准的字符位置。通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。

3.全角与半角在计算机中的表示:据我所知,全角的第一个字节是163(我用-93),然后第二个字节与半角相差128。全角空格和半角空格也要考虑进去。

4.C/C++版本:

 

string ToDBS(string str) { 

    string result = ""; 

    unsigned char tmp; unsigned char tmp1; 

    for (unsigned int i = 0; i < str.length(); i++) { 

        tmp = str[i]; 

        tmp1 = str[i + 1]; 

        cout << "uchar:" << (int) tmp << endl; 

        if (tmp == 163) {///第一个字节是163,标志着是全角字符 

            result += (unsigned char) str[i + 1] - 128; 

            i++; 

            continue; 

        } else if (tmp > 163) {//汉字 

            result += str.substr(i, 2); 

            i++; 

            continue; 

        } else if (tmp == 161 && tmp1 == 161) {///处理全角空格 

            result += ""; 

            i++; 

        } else { 

            result += str.substr(i, 1); } } return result; 

} 

 

5.C#版本:        

     /// <summary> 

        /// 转全角的函数(SBC case) 

        /// </summary> 

        /// <param name="input">任意字符串</param> 

        /// <returns>全角字符串</returns> 

        ///<remarks> 

        ///全角空格为12288,半角空格为32 

        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 

        ///</remarks>         

        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); 

        } 

 

 

         

        /// <summary> 

        /// 转半角的函数(DBC case) 

        /// </summary> 

        /// <param name="input">任意字符串</param> 

        /// <returns>半角字符串</returns> 

        ///<remarks> 

        ///全角空格为12288,半角空格为32 

        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 

        ///</remarks> 

        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); 

        } 

 



你可能感兴趣的:(全角转半角)