Имам sgi скрипт на python, който се опитва да извлече rss елементи, които са публикувани в него, и да съхрани rss в sqlite3 db. Използвам flup като WSGIServer.
За да получа публикуваното съдържание: postData = environ["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 се съхраняват в записа: ÿþ‹ Вярвам, че първоначалните знаци са BOM на rss.
Опитах всяка пермутация, за която можех да се сетя, включително първо кодиране на rss като utf-8 и след това опит за съхраняване, но резултатите бяха същите. Не можах да декодирам, защото някои знаци не можаха да бъдат представени като уникод.
Стартиране на python 2.5.2 sqlite 3.5.7
Благодаря предварително за всяко вникване в този проблем.
Ето извадка от първоначалните данни, съдържащи се в postData, модифицирани от функцията repr, записани във файл и прегледани с по-малко:
'\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- ex/1.0/"›