title: The difference between InputStream and InputStreamReader when reading multi-byte characters
body: <p>The difference between <code>InputStream</code> and <code>InputStreamReader</code> is that <code>InputStream</code> reads as <code>byte</code>, while <code>InputStreamReader</code> reads as <code>char</code>. For example, if the text in a file is <code>abc</code>,then both of them work fine. But if the text is <code>a你们</code>, which is composed of an <code>a</code> and two Chinese characters, then the <code>InputStream</code> does not work.</p>
  
  <p>So we should use <code>InputStreamReader</code>, but my question is:</p>
  
  <p><strong>How does <code>InputStreamReader</code> recognize characters?</strong></p>
  
  <p><code>a</code> is one byte, but a Chinese character is two bytes. Does it read <code>a</code> as one byte and recognize the other of characters as two bytes, or for every character in this text, does the <code>InputStreamReader</code> read it as two bytes?</p>