1

HTML から特殊文字を変換する際に奇妙な問題があります。テキストが HTML エンコードされて MySQL データベースに保存される Django プロジェクトがあります。テキストの書式設定を失いたくないので、これが必要です。

準備段階では、位置の計算など、テキストに対して操作を行う必要があるため、最初にテキストを変換して、すべての HTML タグからクリアする必要があります。これは BeautifulSoup によって行われます。

convertedText = str(BeautifulSoup(text.text, convertEntities=BeautifulSoup.HTML_ENTITIES))
convertedText = ''.join(BeautifulSoup(convertedText).findAll(text=True))

私のDjango-defaultテストサーバーで作業すると、すべて正常に動作しますが、本番サーバーで実行すると、特殊文字を変換するときに奇妙な動作が発生します.

例:

テストサーバー

MySQL-クエリは私に与えます:<p>bassverst&auml;rker</p>

は正しく次のように変換されます:bassverstärker

本番サーバー

MySQL-クエリは私に与えます:<p>bassverst&auml;rker</p>

これは間違って次のように変換されます:bassverst\ucc44rker

どういうわけか に&auml;変換され\ucc44、これは間違った文字になります。

私の構成:

テスト サーバー:

  • Django 組み込みソリューション ( python manage.py runserver)
  • 美しいスープ 3.2.1
  • パイソン 2.6.5
  • Ubuntu 2.6.32-43-ジェネリック

本番サーバー:

  • チェロキー 1.2.101
  • 美しいスープ 3.2.1
  • パイソン2.7.3
  • Ubuntu 3.2.0-32-ジェネリック

どのレベルでエラーが発生するか分からないので、どなたか教えていただけないでしょうか。よろしくお願いします。

4

1 に答える 1

4

これを修正する方法を見つけました。BeautifulSoup に組み込みのメソッドがあることを知りませんでしたgetText()。HTML を変換する場合:

convertedText = BeautifulSoup(text.text, convertEntities=BeautifulSoup.HTML_ENTITIES).getText()

両方のサーバーですべてが正常に機能します。これは機能しますが、問題の例を使用するときに両方のサーバーの動作が異なる理由を知ることは興味深いでしょう.

しかし、すべてに感謝します。

于 2012-11-14T10:19:29.967 に答える