C# Substring 方法遇到特殊字符页面报错 csdn 也识别不了这个字符啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Convert.ToInt32() 取这个字符值是53590 大体是这个值断点调试没记住 反正五万多的一个值 数据库里读出一条数据 里面含有特殊字符 在页面上数据显示不开用C# Substring 方法截取 正好把特殊字符截成两半了 网页就报错了:无法序列化类型 system.string 确切地说,substring不会对该类的方法造成你这样的错误,即使再特殊的字符也能当成一个来识别,你是不是别的地方出错了? Response.Write("雞02154".Substring(0, 1));输出是鸡,没有出错。 在CSDN 这个特殊字符 以c#代码格式根本发布不了 这个字符是个unicode编码格式的字符 Unicode统一了所有字符的编码值,而我们的VS用的是utf-8,我看不懂这是什么字,但它的编码我在上面看到了,于是我改了我的语句,Response.Write("�02154".Substring(0, 1));�即为ud85e的字,但我这边没错你可以把它发到我的email里,我来测试一下:[email protected] .cs 测试代码已发送Unicode统一了所有字符的编码值,而我们的VS用的是utf-8,我看不懂这是什么字,但它的编码我在上面看到了,于是我改了我的语句,Response.Write("�02154".Substring(0, 1));�即为ud85e的字,但我这边没错你可以把它发到我的email里,我来测试一下:[email protected] Response.Write("Excel 2000中文版標準 没有错误,怀疑你的CS编码问题,你改成utf-8带签名再试试。 不要Response.Write 用Label1.Text = str.Substring(0, 16); 很有意思的问题,刚在吃饭,吃完我试了一下,确实发生了错误的问题,联系到刚才的我的/uD85e为什么不是你发给我的那个字,果断写了段代码,发现你发给我的这个字竟是由两个char组合而成的,但我们一般的字都是一个char,而且它的长度为2Char[] cc = " 这字,在csdn上都不认,看看,到上面就截断了,下面没了,呵。Char[] cc = "你的字".ToCharArray(); Response.Write(cc.Length); Char[] cc1 = "我".ToCharArray(); Response.Write(cc1.Length + "|" + "你的字".Length);你的问题大致上已经解决了,不过我需要再找些资料确定一下,好久没有碰到编码上的问题了,有点像组合字了。 我就是想重写下Substring方法 处理下遇到这种特殊字符的办法 但是找不到规律 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; } } 搞好了,你可以直接拿去用,因为是一次性写的,可能有错,请自行修改。http://blog.csdn.net/jimil/article/details/26693133 谢谢这位大侠我在公司大牛的指导下也解决这个问题了Label1.Text = System.Text.Encoding.UTF32.GetString(System.Text.Encoding.UTF32.GetBytes(str), 0, 16 * 4);utf32是将所有字都变成4字元 有道理,全部转为4码元即可解决这问题,不过你的方法不行,getstring未到16个字没作处理,这块上还是写方法吧。 方法完善中 不但要判断截取长度超过字符串长度我还要加上数字和小写英文字母按0.5 大写英文按0.7 汉字按1截取是为了在web页面表格上显示不开时用的 我要考虑英文 数字的宽度要比汉字窄这样显示在web页面的效果才会好看有道理,全部转为4码元即可解决这问题,不过你的方法不行,getstring未到16个字没作处理,这块上还是写方法吧。 ASP.NET中,如何实现把EXCEL的表导入到MYSQL中.代码实现 gridview导出的excel表格没有一个边框为什么啊? itextsharp导出PDF报表问题 如何用onkeyup实现对出生日期输入的限定 高手进来,多表混排的问题 asp.net从IIS到客户端显示的过程中都做了哪些事? 帮我看看!急呀。.. 串字符串给数据库,分割字符串,并更新数据库中对应字段,求速度最快的方法 能不能实现asp和.NET的混合编码? 急!!全身家当求解!NHibernate中调用SaveOrUpdate方法为何更新不了!() access sql 语句 日期查询问题 Easy UI的入门级问题
Unicode统一了所有字符的编码值,而我们的VS用的是utf-8,我看不懂这是什么字,但它的编码我在上面看到了,于是我改了我的语句,Response.Write("�02154".Substring(0, 1));�即为ud85e的字,但我这边没错你可以把它发到我的email里,我来测试一下:[email protected]
Unicode统一了所有字符的编码值,而我们的VS用的是utf-8,我看不懂这是什么字,但它的编码我在上面看到了,于是我改了我的语句,Response.Write("�02154".Substring(0, 1));�即为ud85e的字,但我这边没错你可以把它发到我的email里,我来测试一下:[email protected]
Response.Write(cc.Length);
Char[] cc1 = "我".ToCharArray();
Response.Write(cc1.Length + "|" + "你的字".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;
}
}
http://blog.csdn.net/jimil/article/details/26693133
我在公司大牛的指导下也解决这个问题了
Label1.Text = System.Text.Encoding.UTF32.GetString(System.Text.Encoding.UTF32.GetBytes(str), 0, 16 * 4);
utf32是将所有字都变成4字元
有道理,全部转为4码元即可解决这问题,不过你的方法不行,getstring未到16个字没作处理,这块上还是写方法吧。
我还要加上数字和小写英文字母按0.5 大写英文按0.7 汉字按1
截取是为了在web页面表格上显示不开时用的 我要考虑英文 数字的宽度要比汉字窄
这样显示在web页面的效果才会好看
有道理,全部转为4码元即可解决这问题,不过你的方法不行,getstring未到16个字没作处理,这块上还是写方法吧。