0

私は一連のサイトをクロールし、「D\xfcsseldorfで食事をするのに最適な場所」などのUnicodeエンコード文字を使用してさまざまな文字列を抽出しました。PostgreSQLデータベースに表示されているように保存しています。前述の文字列をデータベースから取得して実行すると、次のようになります。

name = string_retrieved_from_database
print name

unicode u'D\xfcsseldorfで食事をするのに最適な場所'として出力します。文字列をあるべき姿で表示したい:'デュッセルドルフで食事をするのに最適な場所'。どうやってやるの。

4

2 に答える 2

3

できるだけ早くエンコーディングを処理する必要があります。最良の方法は、HTML ページを読み取り、取得したバイト文字列を Unicode にデコードしてから、文字列を Unicode としてデータベースに格納するか、少なくとも UTF8 などの統一されたエンコーディングで格納することです。

詳細については、Pragmatic Unicode または How Do I Stop The Painを参照してください。

于 2012-06-30T01:19:33.030 に答える
3

対話的に表示するだけでなく、変数を印刷すると出力が得られますか? を使用している場合は、決してu'...'表示されるべきではありませんprint:

>>> x = b"Best places to eat in D\xfcsseldorf"
>>> x.decode('latin-1')
u'Best places to eat in D\xfcsseldorf'
>>> print x.decode('latin-1')
Best places to eat in Düsseldorf

実際の文字列にバックスラッシュなどが含まれている場合は、エンコードの段階で何か問題が発生した可能性があります (たとえば、文字どおりのバックスラッシュがテキストに書き込まれたなど)。その場合、「unicode-escape」コーデックを確認することをお勧めします。

>>> x = b"Best places to eat in D\\xfcsseldorf"
>>> print x
Best places to eat in D\xfcsseldorf
>>> print x.decode('unicode-escape')
Best places to eat in Düsseldorf
于 2012-06-30T01:22:48.900 に答える