从HTML转换特殊字符时遇到一个奇怪的问题。我有一个Django项目,其中文本以HTML编码的形式存储在MySQL数据库中。这是必要的,因为我不想丢失文本的任何格式。
在初步步骤中,我必须对文本进行操作,如计算位置,因此我需要先将其转换并从所有HTML标签中清除它。这是由BeautifulSoup完成的:
convertedText = str(BeautifulSoup(text.text, convertEntities=BeautifulSoup.HTML_ENTITIES))
convertedText = ''.join(BeautifulSoup(convertedText).findAll(text=True))
通过处理我的Django默认测试服务器,一切正常,但是当我在生产服务器上运行时,转换特殊字符时会有奇怪的行为。
一个例子:
测试服务器
MySQL-Query给了我:<p>bassverstärker</p>
已正确转换为:bassverstärker
制作服务器
MySQL-Query给了我:<p>bassverstärker</p>
这被错误地转换为:bassverst\ucc44rker
不知何故ä
转换为\ucc44
,这会导致错误的字符。
我的配置:
测试服务器:
python manage.py runserver
)生产服务器:
因为我不知道错误发生在哪个级别,所以我想问一下是否有人可以帮助我。非常感谢提前。
答案 0 :(得分:4)
我找到了解决这个问题的方法。我不知道BeautifulSoup有内置方法getText()
。通过以下方式转换HTML时:
convertedText = BeautifulSoup(text.text, convertEntities=BeautifulSoup.HTML_ENTITIES).getText()
eveything在两台服务器上运行良好。虽然这很有效,但在使用问题中的示例时,知道为什么两台服务器的行为都不同会很有趣。
但是,感谢所有人。