Python 将unicode对象转换为带有实体的拉丁字符串

Python 将unicode对象转换为带有实体的拉丁字符串,python,unicode,Python,Unicode,我有一个unicode对象,比如 x = u"a & 日本語: enči hallöle" 并希望将其转换为带有html实体的拉丁-1字符串,如 "a & 日本語: enči hallöle" 这背后的原因是,我希望我的用户能够输入unicode数据,但我需要保存数据的传统数据库只接受拉丁语-1字符串。(不应转换“ö”,但必须转换其他特殊字符) 你知道这里用哪个模块吗?我搜索了整个编

我有一个unicode对象,比如

x = u"a & 日本語:  enči hallöle"
并希望将其转换为带有html实体的拉丁-1字符串,如

"a & 日本語: enči hallöle"
这背后的原因是,我希望我的用户能够输入unicode数据,但我需要保存数据的传统数据库只接受拉丁语-1字符串。(不应转换“ö”,但必须转换其他特殊字符)


你知道这里用哪个模块吗?我搜索了整个编码模块,查找了一些编解码器,尝试了一些unicode对象的方法,但没有找到合理的解决方案。

只需将您的代码编码为UTF-8,应该可以保存

>>> x.encode("UTF-8")
'a & \xc3\xa6\xc2\x97\xc2\xa5\xc3\xa6\xc2\x9c\xc2\xac\xc3\xa8\xc2\xaa\xc2\x9e:  en\xc3\x84\xc2\x8di hall\xc3\x83\xc2\xb6le'
使用
unicode.encode
“xmlcharrefreplace”
选项,但请注意,它不会将
&
转换为
&为您准备:

>>> x = "a & 日本語:  enči hallöle".decode("utf-8")
>>> x.replace("&", "&").encode("latin-1", "xmlcharrefreplace")
'a & 日本語:  enči hall\xf6le'

非常感谢。这正是我想要的。(现在等待7分钟,直到我可以检查您的答案“已接受”)我会将UTF-8字节存储为具有相同数字的拉丁-1字符,并在数据访问层中进行字符集转换。提供的结果比HTML编码的结果小,并且不会诱使您直接从数据库输出到HTML页面。