but just can't understand why, the "%" special character is represented with itself plus "F1"
The '%' character is represented as %25 in urlencoded form.
"Espa%F1a.jpg" in urlencoded form is "Espa%25F1a.jpg"
If you did not urlencode this filename, then %F1 would be interpreted as the character represented by %F1 in urlencoded form, hence the filename used would be incorrect.
Interestingly, the urlencoded form of "España.jpg" appears to be "Espa%C3%B1a.jpg", not "Espa%F1a.jpg", at least to me.
If I call for an image "Blumenstr%E4u%DFen%20test.jpg" it wont show it, or even calling "Blumensträußen test.jpg" wont do it
That's unusual, as far as I can see the rawurlencoded form is correct.
I dont have any way to test your problem, so you'll have to think about it and construct your own tests, or maybe post some code.