有没有办法将unicode编码为base64的人类可读变体(在python中)

时间:2012-05-04 14:01:31

标签: python encoding character-encoding radix

我想对来自Web界面的用户输入值进行编码,以便我可以安全地将数据传递到我的系统中。换句话说,我想删除我认为不好的字符,如引号和括号等。

我可以使用base64,它可以正常工作。但是,我希望能够读取字符串,如果它们最初是在较低层以人类可读格式的字母数字。

因此,'Nice string'将被编码为'Nice string',但'N@sty!!``string!!))'将被编码为"N=E2sty=B3=B3=XY=XYstring=B3=B3=B1=B1"。 我刚刚做到了,但你明白了。

是否存在这样的编码格式,特别是它存在于python中。

3 个答案:

答案 0 :(得分:4)

怎么样:

urllib.quote("'N@sty!!`` string,!!))'",safe=" ,.").replace('%','=')
'=27N=40sty=21=21=60=60 string,=21=21=29=29=27'

答案 1 :(得分:0)

我认为Punycode会满足您的需求。

import encodings.punycode
encoded = encodings.punycode.punycode_encode(inputstr)

答案 2 :(得分:0)

您可以使用urllib.quote

>>> urllib.quote("Nice String");
'Nice%20String'
>>> urllib.quote("N@sty!!``string!!))");
'N%40sty%21%21%60%60string%21%21%29%29'