Change normalization algorithm to `NKFC` and add docstring for this solution
@@ -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)
