明示的に歯抜けにさせるというコマンドはないが、あわせ技でできる
環境
$ ruby -v ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
やり方
encode
メソッドにはオプションとして未定義なものはリプレースする :undef => :replace
というオプションと :replace => {{変えたい文字列}}
ということができるので、変えたい文字列を指定する。
例
UTF-8からSHIFTJISに変換し、ない文字は消すことを想定する。 UTF-8にしかない文字列を用意するが、今回は以下のページを参考にした。
参考:文字エンコーディングを変換するとき、対応していない文字を数値実体参照に変換する - Qiita
p text
# "ホッケの漢字は𩸽"
# SHIFT_JISに変換 shift_jis_text = text.encode("Shift_JIS", :undef => :replace, :replace => "") # 試しにUTF-8に戻す reverse_utf8_text = shift_jis_text.encode("UTF-8")
# 戻した文字数を比べると減っている p "#{text.size} : #{reverse_utf8_text.size}" # "9 : 8"