我需要删除像重音符号或"ñ"
Ruby 中的拉丁字符。我尝试使用force_encoding('UTF-8')
但没有用。
问问题
1789 次
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 回答