>>679
RTFM って言おうと思ったけど,和訳マニュアルの大事なところがごっそり抜けて
ました.直しときます.unicode( [object[, encoding [, errors]]])
は,encoding が指定されていれば encoding を使って object をデコード
して返します.指定されていなければ,object の __unicode__() メソッドを
呼び出そうとします, __unicode__() が定義されていなければ, Unicode
オブジェクトを返す str(object) のような働きをします.つまり文字コード
推定は行いません.
一方, decode( [encoding[, errors]]) は string を encoding で指定
された文字コードでデコードしようとします. encoding を省略すると,
デフォルトエンコーディングを使うだけです.
結論として, unicode にも decode にも,対象文字列の文字コードごとに
適応的な変換をする仕様はありません.
文字コードに柔軟なデコードを実現したければ,pykf など(といっても他に
知らないけど)を使うか,「日本語文字列全般」からのデコードを実現する,
不可逆で tricky な codec を作るか,ぐらいだと思います.