日期:2014-05-18  浏览次数:20808 次

有人知道为什么结果没有变回去?
static string Covert(string str, Encoding t1, Encoding t2)
  {
  byte[] t1Bytes = t1.GetBytes(str);

  byte[] t2Bytes = Encoding.Convert(t1, t2, t1Bytes);

  char[] t2Chars = new char[t2.GetCharCount(t2Bytes, 0, t2Bytes.Length)];
  t2.GetChars(t2Bytes, 0, t2Bytes.Length, t2Chars, 0);
  string t2String = new string(t2Chars);


  return t2String;
  }
  static void Main(string[] args)
  {
  string str = "你好!";

  string str2 = Covert(str, Encoding.Unicode, Encoding.ASCII);
  string str3 = Covert(str2, Encoding.ASCII, Encoding.Unicode);
  Console.WriteLine(str3);
  }

为啥,最后的结果不是”你好!“
求高人知道
VS2005编译

------解决方案--------------------
Unicode编码转到ASCII编码会造成字符信息丢失,特别是超出ASCII字符集的那些字符。再转回去当然不正确了