title: Unicode byte vs code point (Python)
body: <p>In <a href="http://nedbatchelder.com/text/unipain.html" rel="nofollow">http://nedbatchelder.com/text/unipain.html</a> it is explained that:</p>
  
  <blockquote>
    <p>In Python 2, there are two different string data types. A plain-old
    string literal gives you a "str" object, which stores bytes. If you
    use a "u" prefix, you get a "unicode" object, which stores code
    points.</p>
  </blockquote>
  
  <p>What's the difference between code point vs byte? (I'm thinking not really in term of Python per se but just the concept in general). Essentially it's just a bunch of bits, right? I think of pain old string literal treat each 8-bits as a byte and is handled as such, and we interpret the byte as integers and that allow us to map it to ASCII and the extended character sets. What's the difference between interpreting integer as that set of characters and interpreting the "code point" as Unicode characters? It says Python's Unicode object stores "code point". Isn't that just the same as plain old bytes except possibly the interpretation (where bits of each Unicode character starts and stops as utf-8, for example)?</p>