投稿されたRSSアイテムを抽出し、RSSをsqlite3 dbに保存しようとするpython sgiスクリプトがあります。WSGIServer として flup を使用しています。
投稿されたコンテンツを取得するには: postData = Environment["wsgi.input"].read(int(environ["CONTENT_LENGTH"]))
db に格納するには:
from pysqlite2 import dbapi2 as sqlite
ldb = sqlite.connect("/var/vhost/mysite.com/db/rssharvested.db")
lcursor = ldb.cursor()
lcursor.execute("INSERT into rss(data) VALUES(?)", (postData,))
これにより、rss の最初の数文字だけがレコードに保存されます: ÿþ< 最初の文字は rss の BOM だと思います。
最初にrssをutf-8としてエンコードしてから保存しようとするなど、考えられるすべての順列を試しましたが、結果は同じでした。一部の文字が Unicode として表現できなかったため、デコードできませんでした。
Python 2.5.2 sqlite 3.5.7 の実行
この問題についての洞察を事前に感謝します。
以下は、repr 関数によって変更された postData に含まれる初期データのサンプルで、ファイルに書き込まれ、less で表示されます。
'\xef\xbb\xbf
すべての返信をありがとう!非常に役立ちます。
私が提出したサンプルは、stackoverflow html フィルターを通過しませんでした。再試行し、エンティティに以下と大なりを変換します (プレビューでは、これが機能することを示しています)。
\xef\xbb\xbf<?xml version="1.0" encoding="utf-16"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd= "http://www.w3.org/2001/XMLSchema"><channel><item d3p1:size="0" xsi:type="tFileItem" xmlns:d3p1="http://htinc.com/opensearch- ex/1.0/">