title: the byte string is same in python and c#,but md5 hashcode is different
body: <p>I want to generate the hash code from a string,e.g."咖啡",but the hashcode I get from python and c# is different,the one from python is what I want</p>
  
  <p>c#</p>
  
  <pre><code>String str = "咖啡";
  MD5 m = MD5.Create();
  byte[] data = m.ComputeHash(Encoding.Default.GetBytes(str));
  StringBuilder sbuilder = new StringBuilder();
  for(int i=0;i&lt;data.Length;i++){
    sbuilder.Append(data[i].ToString("x2"));
  }
  byte[] hex = Encoding.Default.GetBytes(str);
  StringBuilder hex_builder = new StringBuilder();
  foreach(byte a in hex){
    hex_builder.Append("{0:x2}",a);
  }
  //md5 hash code
  Response.Write(sbuilder.ToString());
  //binary string
  Response.Write(hex_builder.ToString());
  </code></pre>
  
  <p>python</p>
  
  <pre><code>#coding:utf8
  str = '咖啡'
  m = hashlib.md5()
  m.update(str)
  #md5 hashcode
  print m.hexdigest()
  #binary string
  print ' '.join(["%02x"%ord(x) for x in str])
  </code></pre>
  
  <p><strong>binary string</strong> is e5 92 96 e5 95 a1 both in c# and python</p>
  
  <p><strong>md5 hash code</strong>:</p>
  
  <p>(c#)a761914f9760af3c112e24f08dea1b16</p>
  
  <p>(python)3b7daa58a1fecdf5ba4d94d539fbb4d5</p>