您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> iis70与iis60/51下GetByteCount取值不一样

iis70与iis60/51下GetByteCount取值不一样

来源:网络整理     时间:2016/6/30 21:27:32     关键词:

关于网友提出的“ iis70与iis60/51下GetByteCount取值不一样”问题疑问,本网通过在网上对“ iis70与iis60/51下GetByteCount取值不一样”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: iis70与iis60/51下GetByteCount取值不一样
描述:

要获取一串字符串的字节数,众所周知使用System.Text.Encoding.Default.GetByteCount()方法
在iis6.0和iis5.1下都能正确获取字节数,如:
System.Text.Encoding.Default.GetByteCount("和谐abc") 会返回数值7,
(本机运行.net clr版本为2.0.50727.1433)
但放到服务器上,System.Text.Encoding.Default.GetByteCount("和谐abc") 却返回5
(服务器是iis7.0的.NET CLR 版本为 2.0.50727.4214)
为什么会这样?如何解决?


解决方案1:

你可以测试很多,例如

 System.Text.Encoding.Default.GetByteCount("和谐abc")
System.Text.Encoding.UTF8.GetByteCount("和谐abc")
System.Text.Encoding.UTF7.GetByteCount("和谐abc")
System.Text.Encoding.UTF32.GetByteCount("和谐abc")
System.Text.Encoding.Unicode.GetByteCount("和谐abc")
System.Text.Encoding.ASCII.GetByteCount("和谐abc")
System.Text.Encoding.GetEncoding("gb2312").GetByteCount("和谐abc")

其中只有ASCII编码长度是5(而gb2312是7)。
但是长度不重要,编码的目的首先是为了翻来覆去地传递、转换、保存字节信息时总是保持正确性,不是为了凑字节长度 解决方案2:


System.Text.UTF8Encoding.UTF8.GetByteCount();这样看看多少
public string cutString(string strInput, int intLen)
  {
  strInput = strInput.Trim();
  byte[] myByte = System.Text.Encoding.Default.GetBytes(strInput);
  if (myByte.Length > intLen)
  {
  string resultStr = "";
  for (int i = 0; i < strInput.Length; i++)
  {
  byte[] tempByte = System.Text.Encoding.Default.GetBytes(resultStr);
  if (tempByte.Length < intLen)
  {
    
  resultStr += strInput.Substring(i, 1);
  }
  else
  {
  break;
  }
  }
  return resultStr + "...";
  }
  else
  {
  return strInput;
  }
  }


以上介绍了“ iis70与iis60/51下GetByteCount取值不一样”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2172386.html

相关图片

相关文章