本帖最后由 zhengbin215 于 2010-04-22 17:54:18 编辑

解决方案 »

  1.   

            public void WordPercent(string ss){
           
            //汉字占用Hex = 4个字长,英文占用2个字长,让一个汉字算为2个英文字符,计算有效字符比例
            int i, x;
            int Word;
            int ch1,ch2;
              
            int OriLength;
            int RealLen;
            OriLength =ss.Length;
              
           if (OriLength==0){
            WordPercent = 0;
            }
              
            i = 0;
            if (ss!="") {
                for (int x=1;x<ss.length;x++){
                      
                    Response.Write (Asc(Mid(ss, x, 1)) & "==" & Hex(Asc(Mid(ss, x, 1))) & chr(Asc(Mid(ss, x, 1))));
                    
                    Word = Hex(Asc(Mid(ss, x, 1)));
                    if (Len(Word) > 2) {
                    ch1 = HextoOct(left(Word,2));
                    ch2 = HextoOct(right(Word,2));
                    //GB2312字符集范围
                        if (ch1 >= 176 && ch1 <= 247 && ch2 >= 160 && ch2 <= 254)
                        {
                            i = i + Len(Word) / 2;//是中文就长度加1
                            Response.Write("是GB2312汉字<br>");
                        }
                        else
                        {
                            Response.Write("<font color=red>NotGB2312汉字</font><br>");
                        }
                    }
                }
            }
            RealLen = i;
            Response.Write ((OriLength + RealLen) & "<font color=red>NotGB2312汉字</font><br>");
            WordPercent = Clng(RealLen / (OriLength + RealLen/2) * 100);
              
            }具体的大概是这样了 里面他还有调了其他的方法就不一一解释了
      

  2.   

            public void WordPercent(string ss){
           
            //汉字占用Hex = 4个字长,英文占用2个字长,让一个汉字算为2个英文字符,计算有效字符比例
            int i, x;
            int Word;
            int ch1,ch2;
              
            int OriLength;
            int RealLen;
            OriLength =ss.Length;
              
           if (OriLength==0){
            WordPercent = 0;
            }
              
            i = 0;
            if (ss!="") {
                for (int x=1;x<ss.length;x++){
                      
                    Response.Write (Asc(Mid(ss, x, 1)) + "==" + Hex(Asc(Mid(ss, x, 1))) + chr(Asc(Mid(ss, x, 1))));
                    
                    Word = Hex(Asc(Mid(ss, x, 1)));
                    if (Len(Word) > 2) {
                    ch1 = HextoOct(left(Word,2));
                    ch2 = HextoOct(right(Word,2));
                    //GB2312字符集范围
                        if (ch1 >= 176 && ch1 <= 247 && ch2 >= 160 && ch2 <= 254)
                        {
                            i = i + Len(Word) / 2;//是中文就长度加1
                            Response.Write("是GB2312汉字<br>");
                        }
                        else
                        {
                            Response.Write("<font color=red>NotGB2312汉字</font><br>");
                        }
                    }
                }
            }
            RealLen = i;
            Response.Write ((OriLength + RealLen) + "<font color=red>NotGB2312汉字</font><br>");
            WordPercent = Clng(RealLen / (OriLength + RealLen/2) * 100);
              
            }