2012-04-24 5 views
1

Rubyでアクセントや"ñ"のようなラテン文字を削除する必要があります。私はforce_encoding('UTF-8')を使ってみましたが、うまくいきませんでした。アクセントのようなラテン文字を削除するには?

+1

なぜそれらを削除しますか? – SLaks

+0

ラテン文字以外はどうですか? – SLaks

+2

実際に非アクセントのASCIIに変換しますか? –

答えて

4

私がRubyエンコーディングについて他の回答で使用したこのコードは、ほとんどの場合有効です。

t="déjà" 
puts t.gsub(/[éèàùµñçêï]/, '?') => d?j? 
にあり、そのためのライブラリがあるが、あなたはまた、単純な正規表現を使用することができ、それが置き換えるである場合は、代わりにエンコードをしたい

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

EDIT:あなたのスクリプト自体は、UTF8コーディングで保存されていることを確認します。私はあなたが通常のキャラクターの特別なバージョンを置き換えるコメントで気づいた、あなたはこれを次のようにすることができます

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