Created
May 20, 2011 03:12
-
-
Save okkez/982278 to your computer and use it in GitHub Desktop.
Revisions
-
okkez created this gist
May 20, 2011 .There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,34 @@ # Ruby Encoding Cheat Sheet 1. BINARY な文字列を使うときだけ `force_encoding` しなさい。 2. ネットワークかファイルシステムから BINARY な文字列を受け取ったとき は、確実に正しいエンコーディングに `force_encode` しなさい。 * 一般的に、HTTP における Content-Type ヘッダのようなもので ネットワークから受け取った BINARY な文字列のエンコーディング 情報は与えられている。 * エンーコーディングがわからないときは、その文字列はずっと BINARY で扱いなさい。BINARY でない文字列との結合なんてし てはいけない。 3. BINARY な文字列に `force_encoding` を呼び出したときは、直後に `encode!` を呼び出します。これはその文字列を `default_internal` エンコーディングに変換します。 4. 正規表現で u オプションを使うときは、確実にユニコードな文字列だけを扱いなさい。 5. 正規表現で n オプションを使うときは、確実に BINARY な文字列だけを扱いなさい。 6. BINARY (ASCII-8BIT) ともう一つ互換性のないエンコーディングを受け取った場合、 正しいデバッグのアプローチは、BINARY 文字列がどこから来たか特定することです。 これは、ライブラリが BINARY データをネットワークから読み込んだが、エンコー ディング情報が与えられていないことを意味します。 7. アプリケーションコードでは、* 絶対に * BINARY データを特定のエンコーディングに 変換するために `force_encoding` を使ってはいけない。アプリケーションコードに 辿り着いた時点で、どのエンコーディングが使われていたのかという情報を失っている。 代わりにその文字列が Ruby に入ってきた場所を見つけて、そのデータが持っている情報 に基いて正しいエンコーディングをセットするように修正してください。 8. ライブラリのコードでは、どのエンコーディングが使われているかわかっている BINARY データをあるエンコーディングに変換するためだけに `force_encoding` を使用してください。 これはネットワークプロトコルのヘッダがある場合や、マジックコメントが ERB の テンプレートファイルやソースコードで使われている場合です。 9. マジックコメントをソースファイルに含めるのは、実際にその エンコーディングの文字列をそのソースファイルに含む場合だけです。 10. 二つの相異なるエンコーディングを持つ文字列を結合するには、 `encode` メソッドを使って二つの文字列のエンコーディングを 揃えてから結合します。