"unicode(head.contents [3])"を使用してタグの内容を取得しようとすると、次のような出力が得られます。 "Christensen Sk \ xf6ld "。エスケープシーケンスが文字列として返されるようにしたい。どのようにPythonでそれを行うには?ユニコードのエスケープシーケンスをPython文字列のユニコード文字に変換するには
答えて
は、Pythonは、通常の文字列として名前を見ていると仮定すると、あなたが最初にunicodeにそれをデコードする必要があります:
>>> name
'Christensen Sk\xf6ld'
>>> unicode(name, 'latin-1')
u'Christensen Sk\xf6ld'
これを達成するための別の方法:
>>> name.decode('latin-1')
u'Christensen Sk\xf6ld'
を次の例を参照してください。
文字列の前に "u"があることに注意してください。これを印刷する場合、アクセント付き文字が正しく表示されます。
>>> print name.decode('latin-1')
Christensen Sköld
ところで:必要なときに、あなたは、例えばにユニコードを有効にするデ「エンコード」メソッドを使用することができますUTF-8文字列:Unicodeを使用したバイト文字列が与えられ
>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'
私はそれが正しく動作していると思っています。デフォルトでは、すべての端末がUnicodeをサポートしているわけではないので、Pythonは文字列をASCIIエンコーディングで表示します。あなたが実際に文字列を印刷する場合、それは動作するはずです。
>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa
端末に問題がある場合は、データベース(MySQL)に保存すると正しく表示されますか? – Vicky
はい、そうですが、DBの照合/文字セットのエンコーディングを処理する必要があります。 – securecurve
はb"\N{SNOWMAN}"
、b"\N{SNOWMAN}".decode('unicode-escape)
が期待されるUnicode文字列u'\u2603'
が生成されますエスケープします。
おかげです。だから私はそれをデータベースに保存する必要があれば、それをデコードしてデータベースに保存することができます。 – Vicky
いいえ、Markの例をもう一度読んでください。 (latin1、cp1252など)からユニコードにデータをデコードした後、(1)データベースがサポートし、(2)すべてのユニコード文字を保持するエンコーディングでユニコード文字列をエンコードする必要があります。通常はUTF-8 。 –