将unicode对象转换为带实体的拉丁字符串
我有一个unicode对象,像这样:
x = u"a & 日本語: enči hallöle"
我想把它转换成一个带有html实体的latin-1字符串,像这样:
"a & 日本語: enči hallöle"
这样做的原因是,我希望我的用户能够输入unicode数据,但我需要保存数据的旧数据库只接受latin-1字符串。(“ö”这个字符不需要转换,但其他特殊字符必须转换)
有没有什么模块可以用来实现这个?我查过编码模块,研究了一些编解码器,也尝试了一些unicode对象的方法,但没有找到合适的解决办法。
2 个回答
0
只需要把你的内容编码成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'
4
使用 "xmlcharrefreplace"
这个选项来进行 unicode.encode
,不过要注意,它不会把 &
自动转换成 &
。
>>> x = "a & 日本語: enči hallöle".decode("utf-8")
>>> x.replace("&", "&").encode("latin-1", "xmlcharrefreplace")
'a & 日本語: enči hall\xf6le'