The interactive Python show representation of an object when you just type-in its name. On the other hand, the print command tries to render the character. Your variable named a is of a string type. Actually, strings in Python 2.x are series of bytes. So, it depends on your working environment. You say to the unicode() function that you now use the gb2312 encoding. If it is true, then b contains the correct representation of the character in the given encoding.
Try to
>>> print b
in your case. It is likely you will see the wanted result. Try also:
>>> print repr(a)
...
>>> print repr(b)
The representation is (if possible) a text string that when copy-pasted to a source code would create the object with the same value.
Have a look at Mark Pilgrim's "Dive Into Python 3", Chapter 4. Strings (http://getpython3.com/diveintopython3/strings.html) for a nice, readable explanations.