2011-07-16 14 views
0

私はPythonのエンコーディングに関することを理解しようとしています。そこでここではいくつかのコードは、私が説明しますと、私はあなたがそう最初の行Python:エンコーディングについての質問

text = line.decode(encoding) 

は、エンコーディング「エンコーディング」で与えられ、与えられた文字列を変換しない私の考え:)

text = line.decode(encoding) 
print "type(text) = %s" % type(text) 
iso_8859_1 = text.encode('latin1') 
print "type(iso_8859_1) = %s" % type(iso_8859_1) 
unicodeStr = text.encode('utf-8') 
print "type(unicodeStr) = %s" % type(unicodeStr) 

を確認したいと思いますこれはPythonのUnicodeテキスト形式に変換します。したがって、出力は

type(text) = <type 'unicode'> 

あるだから今、私はUTF-8エンコーディング・スタイルで私のファイルから元のテキストを使用して、私のコードの残りのための「テキスト」UTF-8テキストです。

今、私はutf-8テキストを他の何かに変換したいと考えています。 latin1は "text.encode( 'latin1')"によって行われます。その場合の私のコードの出力は、今

type(iso_8859_1) = <type 'str'> 
type(unicodeStr) = <type 'str'> 

で、私のために残っている唯一の問題:なぜタイプの2つの後者の場合「str」はありません「latin1の」または「ユニコード」です。それは私にはまだ分かりません。

"latin1"または "unicode"でコード化されていない後者の文字列 "iso_8859_1"と "unicodeStr"はresprectivlyですか?

答えて

1

まず、utf8!=ユニコード。
strは基本的にバイトシーケンスであり、エンコードはそのシーケンスを解釈するメソッドであり、ユニコードはよくユニコードです。
Joelはこの件に関して偉大な投稿をしましたhttp://www.joelonsoftware.com/articles/Unicode.html

+1

リンクされた記事を読んだら、残りの部分を把握するのに十分なはずです。あなたを助ける人々の受け入れとアップヴォーティングを開始してください。 – wberry

+0

リンクありがとうございます。私は今何が起こっているのか完全に理解しています! – toom