title: Python and Unicode: How everything should be Unicode
body: <p>Forgive if this a long a question:</p>
  
  <p>I have been programming in Python for around six months. Self taught, starting with the Python tutorial and then SO and then just using Google for stuff.</p>
  
  <p>Here is the sad part: No one told me all strings should be Unicode. No, I am not lying or making this up, but where does the tutorial mention it? And most examples also I see just make use of <code>byte strings</code>, instead of <code>Unicode strings.</code> I was just browsing and came across this question on <a href="https://stackoverflow.com/questions/1116449/should-i-use-unicode-string-by-default">SO</a>, which says how every string in Python should be a Unicode string. This pretty much made me cry!</p>
  
  <p>I read that every string in Python 3.0 is Unicode by default, so my questions are for 2.x:</p>
  
  <ol>
  <li><p>Should I do a:</p>
  
  <p><code>print u'Some text'</code> or just <code>print
  'Text'</code> ?</p></li>
  <li><p>Everything should be Unicode, does this mean, like say I have a <code>tuple</code>: </p>
  
  <p><code>t = ('First', 'Second'), it should be t = (u'First', u'Second')?</code> </p>
  
  <p>I read that I can do a <code>from __future__ import unicode_literals</code> and then every string will be a Unicode string, but should I do this inside a container also?</p></li>
  <li><p>When reading/ writing to a file, I should use the <code>codecs</code> module. Right? Or should I just use the standard way or reading/ writing and <code>encode</code> or <code>decode</code> where required? </p></li>
  <li><p>If I get the string from say <code>raw_input()</code>, should I convert that to Unicode also?</p></li>
  </ol>
  
  <p>What is the common approach to handling all of the above issues in 2.x? The <code>from __future__ import unicode_literals</code> statement? </p>
  
  <p>Sorry for being a such a noob, but this changes what I have been doing for a long time and so clearly I am confused.</p>