🚀

[Feature #20792] 指定したエンコードが String#force_encoding で有効かどうかを判定する提案

2024/10/11に公開

[Feature #20792] String#forcible_encoding?

  • 指定したエンコーディングが String#force_encoding で有効かどうかを判定する String#forcible_encoding? を追加する提案
  • イメージとしては以下のような挙動になる想定
def forcible_encoding?(enc)
  original = encoding
  # 一度 force_encoding で変化し、それが有効かどうか判定する
  result = force_encoding(enc).valid_encoding?
  # その後また戻す
  force_encoding(original)
  result
end
  • インターフェースをどうするのかとパフォーマンスの面で議論が進んでいるみたいですね
    • インターフェースに関しては String に生やすのか Encoding::UTF_8.valid_sequence?(str) みたいに Encoding から呼び出せるようにするのか
    • パフォーマンスに関しては .dup するあたりの話がされている
GitHubで編集を提案

Discussion