c#中用length取字符串长度是把汉字和字母都当成1个长度单位

解决方案 »

  1.   

    System.Text.Encoding.Default.GetBytes(x).Length;
      

  2.   

    int iLength = System.Text.Encoding.Default.GetByteCount(x);
      

  3.   

    请问:如果我要如何使用 substring 才能取出我要的字符?
      

  4.   

    看来c#不适合处理汉字。
    这个基本的数据都无法正确处理,一点用处都没有!
    ms,它奶奶的!
      

  5.   

    你不会想用substring取得半个汉字吧?有另外的函数来做呀
      

  6.   

    不知道楼上各位开骂之前听没听说过Unicode码。
      

  7.   

    .net中字符串全转成unicode, 双字节
      

  8.   

    我的字符串是固定格式的,并且是汉字和字符,数字混合的。
    我当然要解出每个部分,如果象c#这样干,就无法得到了。
    你说c#有个鸟用!基本的功能都不能实现!!!
    ms 这个龟儿子,害人哪!
      

  9.   

    楼主是用的Managed C++吗?如果是,结果应该和C#的一样。
      

  10.   

    同样的功能,用vc++.net 就是正确的,不知c#为何这么麻烦?
      

  11.   

    C#使用的是Unicode码,不像C++,使用ASCII码。所以String.Length的到的结果没有错。
    如果单纯凭这一点断定C#没有用。那你应该连java也一起骂上。java也是使用Unicode.你的代码放在java中,会得到同样的结果。那么楼主的话就成了。你说java/j2ee有个鸟用!基本的功能都不能实现!!!
    SUN这个龟儿子,害人哪!既然楼主一开始就提到自己在学习C#,如果楼主真的在学习一门技术的话,希望能对这门技术深入以后,在发表评论。
    略知一二后就开口大骂,是学不好技术的
      

  12.   

    这完全是ms的错误!
    一个本来很容易的事情,被它们搞的这么麻烦!
    vc++.net 2003 和vc#.net 同样的代码,不同的结果!
    ms 不是说在.net下不同的语音会有相同的结果吗? 骗子嘛!
      

  13.   

    楼上的快乐王子已经说过如果在Visual C++里面使用managed C++,得到的结果是一样的。
    希望楼主能在多学习一下。就可以理解什么是MS说的“不同的语音会有相同的结果吗”
    这就是楼主期望的C++代码
    #using <mscorlib.dll>
    #include <tchar.h>using namespace System;int _tmain(void)
    {
        String *x="我们的212";
        Console::WriteLine(x->Length);
        return 0;
    }
    同样,执行结果是6。