这称为音译.可以使用Iconv类来执行此近似(参见示例).
尝试以下之一(首先需要'iconv'):
Iconv.iconv('ascii//ignore//translit', 'utf-8', string).to_s
Iconv.iconv('ascii//translit', 'utf-8', string).to_s
irb(main):013:0> Iconv.iconv('ascii//translit', 'utf-8', 'spaß').to_s
=> "spass"
irb(main):014:0> Iconv.iconv('ascii//translit', 'utf-8', 'crêpes').to_s
=> "crepes"
irb(main):017:0> Iconv.iconv('ascii//translit', 'utf-8', 'über').to_s
=> "uber"
Run Code Online (Sandbox Code Playgroud)
还有一个iconv命令行实用程序.有关这方面的更多信息和一些Ruby示例(在这里搜索'ruby').
另一个替代方案是Unidecode,我猜这是受原始Perl实现的启发.我没有在它的Ruby化身中使用它,但它应该更好地进行多字符扩展(显然你想要).
最后,如果您正在运行Rails,您可能会发现此主题很有趣.它详细介绍了音译的替代方法之间的一些差异,并展示了在Rails核心中执行此操作的方法(ActiveSupport::Inflector.transliterate)