У меня есть скрипт python sgi, который пытается извлечь отправленные ему элементы rss и сохранить rss в базе данных sqlite3. Я использую flup в качестве WSGIServer.
Чтобы получить размещенный контент: postData = environ["wsgi.input"].read(int(environ["CONTENT_LENGTH"]))
Чтобы попытаться сохранить в БД:
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.
Я пробовал все перестановки, которые я мог придумать, включая сначала кодирование rss как utf-8, а затем попытку сохранения, но результаты были такими же. Я не мог декодировать, потому что некоторые символы не могли быть представлены как юникод.
Запуск питона 2.5.2 sqlite 3.5.7
Заранее благодарим за любое понимание этой проблемы.
Вот пример исходных данных, содержащихся в postData, измененных функцией repr, записанных в файл и просмотренных с помощью less:
'\xef\xbb\xbf
Спасибо за все ответы! Очень полезно.
Образец, который я представил, не прошел через html-фильтры stackoverflow, попытается снова, преобразовав меньше и больше, чем в сущности (предварительный просмотр показывает, что это работает).
\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- экс/1.0/"›