Есть ли способ кодировать 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)
Другие вопросы по тегам