diff options
author | Jan Rieger <jrx@centrum.cz> | 2020-04-16 19:43:40 +0200 |
---|---|---|
committer | Sviatoslav Sydorenko <wk@sydorenko.org.ua> | 2020-04-17 17:56:24 +0200 |
commit | a906ced81451c15a958181386a8492b25bb2ee1c (patch) | |
tree | 64327369e65e0f5cd3e2282efe3ddb947bca0a28 /cherrypy | |
parent | 9ca3f6674800b94f49abedbaf9f1bdd982ca8f46 (diff) | |
download | cherrypy-git-a906ced81451c15a958181386a8492b25bb2ee1c.tar.gz |
Change normalization algorithm to `NKFC` and add docstring for this solution
Diffstat (limited to 'cherrypy')
-rw-r--r-- | cherrypy/lib/static.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/cherrypy/lib/static.py b/cherrypy/lib/static.py index d806242d..70556739 100644 --- a/cherrypy/lib/static.py +++ b/cherrypy/lib/static.py @@ -34,9 +34,17 @@ def _make_content_disposition(disposition, file_name): This function implements the recommendations of :rfc:`6266#appendix-D`. See this and related answers: https://stackoverflow.com/a/8996249/2173868. + + As normalization algorithm for `unicodedata` is used composed form (NFC and NKFC) + with compatibility equivalence criteria (NFK), so "NKFC" is the one. + It first applies the compatibility decomposition, followed by the canonical + composition. Should be displayed in the same manner, should be treated in + the same way by applications such as alphabetizing names or searching, + and may be substituted for each other. + See: https://en.wikipedia.org/wiki/Unicode_equivalence. """ ascii_name = ( - unicodedata.normalize('NFKD', file_name). + unicodedata.normalize('NKFC', file_name). encode('ascii', errors='ignore').decode() ) header = '{}; filename="{}"'.format(disposition, ascii_name) |