BETA

nil.to_sのエンコード変更

投稿日:2020-01-11
最終更新:2020-01-12

Ruby 2.7.0でnil.to_sがfrozen stringを返すようになりました。
なのでエンコードの変更は失敗します。

irb> nil.to_s.force_encoding('utf-8')  
FrozenError (can't modify frozen String: "")  

encodeに変更すればいいんですが、force_encodingを使うのは文字列のコピーを避けたいからだし。。。

irb> nil.to_s.encode('utf-8')  
=> ""  

他の文字列の場合はasciiからutf-8に強制変更したいみたいだったので、非frozen文字列で。

irb> (+nil.to_s).force_encoding('utf-8')  
=> ""  
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

すごーい。 きみはクランチのフレンズなんだね。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう