Существует несколько способов удаления нежелательных символов.
"���email@locale".chars.select(&:ascii_only?).join
=> "email@locale"
"���email@locale".gsub(/[^\p{Ascii}]/, '')
=> "email@locale"
Это будет разрываться с доменными именами, которые содержат международные символы, что нормально в наши дни.
Чтобы разрешить ascii до @
и все, что после этого, вы можете использовать что-то вроде этого:
sanitized_email = "���email@locale"[/\p{Ascii}+?@[^\s]+/]
# now you can check if the email was valid at all:
raise "invalid email" if sanitized_email.nil?