例如:
string s="

解决方案 »

  1.   

    那么,为什么:string s="我";
    看看s.Length是1,不是2?
      

  2.   

    Length因该输出是1才对
    GetBytes().Length 才是2
      

  3.   

    string的Length,返回的不是字节数,而是字符数。
      

  4.   

    应该跟编码没关系,string.length就是包含字符的个数,你是不是包含了两个空格
      

  5.   

    没有。你可以试试。string s1="
      

  6.   

    System.Globalization.StringInfo sInfo = new System.Globalization.StringInfo(s);
                int i= sInfo.LengthInTextElements;
      

  7.   

     Length  是字符长度
     汉字 数字 字母 返回的都是1
    string s="
      

  8.   

    不是半角问题,也不是全角问题。我觉得应该是微软的Bug。[Quote=引用 11 楼  的回复:] Length  是字符长度
     汉字 数字 字母 返回的都是1
    string s="
      

  9.   

    转成 unicode 是 \ud866\udc3a  
    ��确实是2个组成的 
      

  10.   

    那,就是说,应该是Bug了因为Length不能正确统计字符的个数。
      

  11.   

    汉字的总量远远不止两万个,而双字节的资源已“用尽”,其它的汉字编码只能使用更多的字节。按理说二字节放不下就该用三字节编码,但令人费解的是GB18030—2000跳过了三字节不用而采用了四字节编码,本标准中收入四字节编码汉字6530个。若对《中华字海》中全部八万多汉字编码,其中会有六万多是四字节编码。
        GB18030—2000的“引用标准”中包括国家技术标准GB13000.1—93(信息技术  通用多八位编码字符集(UCS)   第一部分:体系结构与多文种平面)。在GB13000.1—93中有如下一段文字:
       “在正则形式中,用四个八位来表示每一个字符,并相应地指定组、平面、行和字位,由于两个八位不足以包容世界上的所有字符,而32位的表示又符合现代处理系统的体系结构,所以正则形式由四个八位组成。”
      

  12.   

    只能说 length把4字节的汉字算成了2个2字节的汉字
    生僻词才会出现
    我试了  其他语言也一样 应该是底层的问题   
      

  13.   

    但关键是:我现在要统计“字符数”,而不是统计“字节数”。如果给一大段文字,该怎么统计“字符数”?有些字符占2字节,有些占3字节,有些占4字节。这样也太难统计了吧。反正,用Length是不正确的了。
      

  14.   

    Length 属性返回此实例中 Char 对象的个数,而不是 Unicode 字符个数。 原因在于一个 Unicode 字符可能会用多个 Char 表示。 使用 System.Globalization.StringInfo 类来处理每个 Unicode 字符而不是每个 Char。
     上面是MSDN的官方解释,和本地化语言有关系找了找代码,
    下面的可以解决(从MSDN修改的)[code=C#] string s = "
      

  15.   

    你统计的字符数  可能存储在数据库中会造成超过最大值
    如 sql中 nvarchar(100)
    你统计的字符数是100  但是有2个4字节的汉字
    那你存入数据库就超长了2个字符何必呢  就按2个汉字统计好了
      

  16.   

    这个方法好像可以啊。多测试几遍先。[Quote=引用 21 楼  的回复:]C# code
    string s = "
      

  17.   

    第一个字符,是特殊字,有两个字符组成的;
    string.length是用来统计字符串中的字符个数的。PS:第一个字怎么拼出来的啊,表示手写输入都没有找到这个字。
      

  18.   

    21楼正解  对于有的字符 需要两个unicode来表示 其中第一个叫高位代理 第二个叫做低位代理 通过这两个unicode就可以表示100w个左右的字符 事实上楼主需要的是叫做“文本”的长度,而length返回的是“字符”的长度
      

  19.   

    一般统计字符个数都是先Trim()的。
      

  20.   

    我这写了一个程序运行了一下,出现下面的结果,是什么情况呢?(怎么回复不能贴图片呢?好麻烦哦)
    (我用的是vs2008运行的)
    #include <iostream>
    #include <string.h>
    using namespace std;
    int main(int args,char **argv)
    {
    string s1="