我有一个 python sgi 脚本,它尝试提取发布到它的 rss 项目并将 rss 存储在 sqlite3 db 中。我使用 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 的 BOM。
我已经尝试了我能想到的所有排列,包括首先将 rss 编码为 utf-8,然后尝试存储,但结果是相同的。我无法解码,因为某些字符无法表示为 unicode。
运行 python 2.5.2 sqlite 3.5.7
提前感谢您对此问题的任何见解。
这是 postData 中包含的初始数据示例,由 repr 函数修改,写入文件并使用 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/">