C#解决汉字长度判断的问题
C#判断string的长度时一律按照字符处理,汉字也是一个字符长度,这应该是个bug,如果string存在汉字,取长度时一定要注意。如果直接取string的length,一定是错误的,我在网上看到有人按照汉字编码判断取长度,如下:
      public static int GetLength(string str) 
      { 
          if (str.Length == 0) return 0; 
          ASCIIEncoding ascii = new ASCIIEncoding(); 
          int tempLen = 0; byte[] s = ascii.GetBytes(str); 
          for (int i = 0; i < s.Length; i++) 
          { 
              if ((int)s[i] == 63)
              { 
                  tempLen += 2; 
              } 
              else 
字符串长度判断              { 
                  tempLen += 1; 
              }
          } 
          return tempLen; 
      } 
这种做法对大字串来说效率很低,我另外想了一个办法,因为string转为byte[]后,长度不变,而byte[]不存在汉字的问题,何不直接取byte[]的长度呢,所以方法如下:
int BodySize = Encoding.Default.GetBytes(In_SendMessage).Length

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。