What encoding do normal python strings use?
what encoding are normal python
  strings use?

In Python 3.x
str is Unicode.  This may be either UTF-16 or UTF-32 depending on whether your Python interpreter was built with "narrow" or "wide" Unicode characters.
The Windows version of CPython uses UTF-16.  On Unix-like systems, UTF-32 tends to be preferred.
In Python 2.x
str is a byte string type like C char.  The encoding isn't defined by the language, but is whatever your locale's default encoding is.  Or whatever the MIME charset of the document you got off the Internet is.  Or, if you get a string from a function like struct.pack, it's binary data, and doesn't meaningfully have a character encoding at all.
unicode strings in 2.x are equivalent to str in 3.x.

and why don't they use unicode?

Because Python (slightly) predates Unicode.  And because Guido wanted to save all the major backwards-incompatible changes for 3.0.  Strings in 3.x do use Unicode by default.
i know that django uses unicode strings all over the framework instead of normal python strings. what encoding are normal python strings use ? and why don't they use unicode?