csdn 也识别不了这个字符啊

解决方案 »

  1.   

    Convert.ToInt32() 取这个字符值是53590 大体是这个值断点调试没记住 反正五万多的一个值
      

  2.   

    数据库里读出一条数据 里面含有特殊字符  在页面上数据显示不开用C# Substring 方法截取  正好把特殊字符截成两半了  网页就报错了:无法序列化类型 system.string 
      

  3.   

    确切地说,substring不会对该类的方法造成你这样的错误,即使再特殊的字符也能当成一个来识别,你是不是别的地方出错了?
      

  4.   

    Response.Write("雞02154".Substring(0, 1));输出是鸡,没有出错。
      

  5.   

    在CSDN  这个特殊字符 以c#代码格式根本发布不了  这个字符是个unicode编码格式的字符
      

  6.   


    Unicode统一了所有字符的编码值,而我们的VS用的是utf-8,我看不懂这是什么字,但它的编码我在上面看到了,于是我改了我的语句,Response.Write("�02154".Substring(0, 1));�即为ud85e的字,但我这边没错你可以把它发到我的email里,我来测试一下:[email protected]
      

  7.   

    .cs 测试代码已发送
    Unicode统一了所有字符的编码值,而我们的VS用的是utf-8,我看不懂这是什么字,但它的编码我在上面看到了,于是我改了我的语句,Response.Write("�02154".Substring(0, 1));�即为ud85e的字,但我这边没错你可以把它发到我的email里,我来测试一下:[email protected]
      

  8.   

    Response.Write("Excel 2000中文版標準
      

  9.   

    没有错误,怀疑你的CS编码问题,你改成utf-8带签名再试试。
      

  10.   

    不要Response.Write    用Label1.Text = str.Substring(0, 16);
      

  11.   

    很有意思的问题,刚在吃饭,吃完我试了一下,确实发生了错误的问题,联系到刚才的我的/uD85e为什么不是你发给我的那个字,果断写了段代码,发现你发给我的这个字竟是由两个char组合而成的,但我们一般的字都是一个char,而且它的长度为2Char[] cc = "
      

  12.   

    这字,在csdn上都不认,看看,到上面就截断了,下面没了,呵。Char[] cc = "你的字".ToCharArray();
                Response.Write(cc.Length);
                Char[] cc1 = "我".ToCharArray();
                Response.Write(cc1.Length + "|" + "你的字".Length);你的问题大致上已经解决了,不过我需要再找些资料确定一下,好久没有碰到编码上的问题了,有点像组合字了。
      

  13.   

    我就是想重写下Substring方法 处理下遇到这种特殊字符的办法 但是找不到规律
      

  14.   

    public static string ExampleStr(string str, int length)
            {
                string Str = "";
                if (str.Length > length)
                {
                    double i = 0;
                    char[] s = str.ToCharArray();
                    for (int j = 0; j < s.Length; j++)
                    {
                        int k = Convert.ToInt32(s[j]);
                        if ((k >= 33 && k <= 64) || (k >= 91 && k <= 126))
                            i = i + 0.5;
                        else if (k > 64 && k < 91 && k != 87)
                            i = i + 0.7;
                        else
                            i = i + 1;
                        if ((int)i >= length)
                        {
                            if (j < s.Length)
                                return Str + "...";
                            else
                                return Str;
                        }
                        Str = Str + s[j];
                    }
                    return Str;
                }
                else
                {
                    Str = str;
                    return Str;
                }
            }
      

  15.   

    搞好了,你可以直接拿去用,因为是一次性写的,可能有错,请自行修改。
    http://blog.csdn.net/jimil/article/details/26693133
      

  16.   

    谢谢这位大侠
    我在公司大牛的指导下也解决这个问题了
    Label1.Text = System.Text.Encoding.UTF32.GetString(System.Text.Encoding.UTF32.GetBytes(str), 0, 16 * 4);
    utf32是将所有字都变成4字元
      

  17.   


    有道理,全部转为4码元即可解决这问题,不过你的方法不行,getstring未到16个字没作处理,这块上还是写方法吧。
      

  18.   

    方法完善中 不但要判断截取长度超过字符串长度
    我还要加上数字和小写英文字母按0.5  大写英文按0.7 汉字按1
    截取是为了在web页面表格上显示不开时用的 我要考虑英文 数字的宽度要比汉字窄
    这样显示在web页面的效果才会好看
    有道理,全部转为4码元即可解决这问题,不过你的方法不行,getstring未到16个字没作处理,这块上还是写方法吧。