Closed spanezz closed 5 months ago
This is documented in Werkzeug's change log, where the change happened. https://werkzeug.palletsprojects.com/en/3.0.x/changes/#version-2-3-0
Percent encoding in URLs must always represent UTF-8 bytes. Invalid bytes are left percent encoded rather than replaced.
See https://github.com/pallets/werkzeug/issues/2602 for the issue discussing the change and https://github.com/pallets/werkzeug/pull/2641 for the PR with more discssion.
Flask until 2.0 decoded %-encoded entities from query strings, while it seems that Flask 3.0 does not.
Given this
print_args.py
:Ok Flask 2:
On Flask 3:
While I understand %A0 is not a valid unicode sequence, this is a change of behaviour may be worth documenting.