2

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

4

1 回答 1

5

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

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

如果它是你想要的替换而不是编码,那么有一些库可以解决这个问题,但你也可以使用一个简单的正则表达式

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

编辑:我在评论中注意到你想用普通字符替换特殊版本的字符,你可以这样做如下

p string_with_special_chars.tr( 
"ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž", 
"AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz")
于 2012-04-24T22:16:53.907 回答