A simple and natural policy is to always keep URLs in escaped forms,
whether or not they are used inside Emacs only. So, my proposal is as
follows:
* Always treat URLs as those in escaped form. Don't re-escape or
unescape them as long as they are URLs (i.e, have a prefix such as
"file://"). Increasing the kind of escaped characters is not
re-escaping.
* When creating a URL from a file name, encode the file name with
the file name coding system and then %-escape it.
* When creating a file name from a URL, %-unescape the URL and then
decode it with the file name coding system.