🗂

[Misc #21025] String.new の引数がない場合のエンコーディングの話

2025/01/14に公開

[Misc #21025] What's the default encoding of String.new?

  • String.new で文字列を生成した場合に .new の引数の文字列のエンコーディングが反映されます
str = "hoge".encode("SJIS")

# str のエンコーディングが反映される
pp String.new(str).encoding
# => #<Encoding:Windows-31J>

pp String.new(str.encode("UTF-8")).encoding
# => #<Encoding:UTF-8>
  • この時に『 .new の引数がない場合のエンコーディング』がドキュメントに明記されていないというチケットになります
  • これはエンコーディングが BINARY になるのが期待する挙動なのでドキュメントにその旨が追記されるように対応されました
pp String.new.encoding
# => #<Encoding:BINARY (ASCII-8BIT)>
GitHubで編集を提案

Discussion