There is the utf8-cleaner gem, however it only handles incorrectly % encoded strings. It will not clean strings which are unencoded utf-8 characters.
So I forked his gem (https://github.com/lulalala/utf8-cleaner), and change the semantic to respond with 400 error if request url contains not-%-encoded utf-8 characters. You could fork mine version again to sanitize instead of responding with 400.
(but in my opinion sanitized request is never useful, it is better to respond with 400)