如何删除重音符号等拉丁字符?

jgi*_*nta 2 ruby ruby-on-rails

我需要删除重音符号或"ñ"Ruby 中的拉丁字符。我尝试使用,force_encoding('UTF-8')但是没有用。

pet*_*ter 5

我在其他有关Ruby编码的其他答案中使用的这段代码在大多数时候被证明是有效的。确保您的脚本本身使用UTF8编码保存:

t="doña"
p t.force_encoding(Encoding.locale_charmap).encode('UTF-8')
#=>"do\u251C\u2592a"
Run Code Online (Sandbox Code Playgroud)

如果要替换,则要代替编码,而是要使用库,但也可以使用简单的正则表达式

t="déjà"
puts t.gsub(/[éèàùµñçêï]/, '?') => d?j?
Run Code Online (Sandbox Code Playgroud)

编辑:我在注释中注意到您想用普通字符替换特殊版本的字符,您可以按照以下步骤进行操作

p string_with_special_chars.tr( 
"ÀÁÂÃÄÅàáâãäå??????Çç????????Ðð????ÈÉÊËèéêë??????????????????????ÌÍÎÏìíîï?????????????????????????Ññ?????????ÒÓÔÕÖØòóôõöø??????????????????Šš???????ÙÚÛÜùúûü??????????????Ýýÿ??Ÿ????Žž", 
"AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz")
Run Code Online (Sandbox Code Playgroud)