Есть ли способ кодировать Unicode в читаемый человеком вариант base64 (в Python)
Я хотел бы закодировать вводимые пользователем значения, поступающие из веб-интерфейса, таким образом, чтобы я мог безопасно передавать данные в свою систему. Другими словами, я хочу отделить то, что я считаю плохими символами, такими как кавычки и скобки и т. Д.
Я мог бы использовать base64, и это будет работать нормально. Однако я хотел бы иметь возможность читать строки, если они изначально были буквенно-цифровыми в удобочитаемом формате на нижних уровнях.
Так, 'Nice string'
будет закодирован в 'Nice string'
но 'N@sty!!``string!!))'
будет закодирован в нечто вроде "N=E2sty=B3=B3=XY=XYstring=B3=B3=B1=B1"
, Я только что выдумал, но вы поняли идею.
Существует ли такой формат кодирования и, в частности, существует ли он в python.
3 ответа
Как насчет:
urllib.quote("'N@sty!!`` string,!!))'",safe=" ,.").replace('%','=')
'=27N=40sty=21=21=60=60 string,=21=21=29=29=27'
Вы могли бы использовать urllib.quote
:
>>> urllib.quote("Nice String");
'Nice%20String'
>>> urllib.quote("N@sty!!``string!!))");
'N%40sty%21%21%60%60string%21%21%29%29'
Я думаю, что Punycode удовлетворит ваши потребности.
import encodings.punycode
encoded = encodings.punycode.punycode_encode(inputstr)