TL;DR バージョン:# coding: utf-8
またはを使用し# encoding: utf-8
ます。それらは現代的であり、それらの間に違いはありません。
この最も啓発的な記事によると、Ruby 1.9 のルールでは、マジック コメントは次のようにする必要があります。
コードの最初の行は、コーディングという単語を含むコメントで、その後にコロンとスペースが続き、エンコーディング名が続きます...
これは 1、2、3 をカバーし、おそらく次のようなものも含ま# foobarcoding: utf-8
れます。これは、Ruby 1.9 で推奨される方法です。
互換性の理由-K*
から、4 をカバーする Ruby 1.8 のハッシュ バング スイッチが保持されています。
数字の 5 と 6 は、少し異なる内容をカバーしています。外部エンコーディングと内部エンコーディングが正確にどのように機能するかを確認するには、前述の記事を読むことをお勧めします。ただし、要点は、IO オブジェクトを介してデータを読み取る場合、そのデータを正しく読み取るためにどのようにエンコードするかが重要であるということです。外部エンコーディングはまさにそれを表現しています。したがって、外部エンコーディングを UTF-8 に設定すると、読み取っているファイルが UTF-8 でエンコードされていることを意味します。内部エンコーディングは、Ruby がその操作の結果の文字列を自動的にトランスコードする必要があるエンコーディングです。
外部エンコーディングが明示的に設定されていない場合は、設定しているデフォルトが使用されます。これらのデフォルトは、ハッシュ bang のフラグを介して変更できます-E
(番号 5。したがって、5 と 6 は同じように機能します)。
渡す-U
と、内部エンコーディングが UTF-8 に設定されます (つまり、文字列は読み取り時に自動的に UTF-8 にトランスコードされます)。