Ответ 1
Если ваши строки являются Unicode (и они действительно должны быть в настоящее время), вы можете просто проверить, что все кодовые точки 127 или меньше. Нижними 128 кодовыми точками Unicode являются ASCII.
Например, что-то вроде:
"ASCII".is_ascii? # => true
"تجربة".is_ascii? # => false
Если ваши строки являются Unicode (и они действительно должны быть в настоящее время), вы можете просто проверить, что все кодовые точки 127 или меньше. Нижними 128 кодовыми точками Unicode являются ASCII.
Для вас существует метод bult-in Ruby string.
str.ascii_only? → true or false
Возвращает true для строки, которая имеет только символы ASCII.
"abc".force_encoding("UTF-8").ascii_only? #=> true
"abc\u{6666}".force_encoding("UTF-8").ascii_only? #=> false