After investigations I found that the url stored in the database is neither encoded nor decoded, it is somewhat in between.
If you have a track with the file path ending
~!@#$%^&*(){}[]:,;?+\'"\\ .mp3
It is stored in the database as
~!@%23$%25%5E&*()%7B%7D%5B%5D:,%3B%3F+%5C'%22%5C%5C .mp3
It appears from the url-dispatcher as
~!@%23$%25%5E&*()%7B%7D[]:,;%3F+%5C'%22%5C%5C%20.mp3
Therefore ; [ ] need to be switched to %3B %5B %5D and a %20 needs to be switched to a space.
Note that a / and = cannot be used in the filename as a / is used to declare a folder and a = breaks the command line arguments.
After investigations I found that the url stored in the database is neither encoded nor decoded, it is somewhat in between.
If you have a track with the file path ending &*(){}[ ]:,;?+\ '"\\ .mp3 %25%5E& *()%7B% 7D%5B%5D: ,%3B%3F+ %5C'%22% 5C%5C .mp3 %25%5E& *()%7B% 7D[]:,; %3F+%5C' %22%5C% 5C%20.mp3
~!@#$%^
It is stored in the database as
~!@%23$
It appears from the url-dispatcher as
~!@%23$
Therefore ; [ ] need to be switched to %3B %5B %5D and a %20 needs to be switched to a space.
Note that a / and = cannot be used in the filename as a / is used to declare a folder and a = breaks the command line arguments.