「初めてのRuby」を読むの続き
4章 文字列
4.10 Ruby1.9とマルチバイト文字列
から
※注意!1.9です。昨日やったのは1.8。
■Ruby1.9とマルチバイト文字列
・Ruby1.9以降は「本格的な多言語対応」
→日本語だけではない
→Unicodeだけでもない
・1.9では、文字列は「文字の列」
→1.8のようなバイト列ではない
→Stringオブジェクトは自分自身のエンコーディングを知っている
→lengthもエンコーディングを考慮して「文字の数」を返す
・特にバイナリデータを処理するため、文字列をバイト列として扱うときは
Encoding::ASCII_8BITというエンコーディングの文字列を使用する
■4.10.1 Encoding
・各種の文字エンコーディングはEncodingオブジェクトによって表現されている
→現在利用可能なエンコーディングを一覧したり:Encoding.name_list
Encodingオブジェクトを取得できる
・入出力、内部表現で関係する
■4.10.2 マジックコメント
・ソースコードがどの方式でエンコードされているかを示す
・次のようなコメント文をソース冒頭に記述
#_*_ coding: utf-8 _*_
(#は、本当は半角)
・以下のような書き方でもよい
# vim:fileencoding=UTF-8
(#は、本当は半角)
■4.10.3 内部表現
・実行時の内部エンコーディングは、オブジェクトごとにまちまち
→文字列、シンボル、正規表現は自分自身のエンコーディングを
知っている
→必ずしもソースコードのエンコーディングと一致させる
必要はない
・文字列リテラルで生成されたStringオブジェクトはデフォルトで
ソースコードと同じエンコーディング
・Stringのencodingメソッドで、コード変換できる
→非破壊メソッド。破壊的なencoding!もある
・force_encodingメソッドは、バイト表現を変化させず、エンコーディング
情報のみを変化させる
■4.10.4 文字列の結合
・エンコーディングが異なる文字列同士を結合するこちは出来ません
→エンコーディングを混ぜて文字化けすることは防止される
■文字列の同値性
・文字列、バイト表現が同値でかつエンコーディングも同じ場合に限り同値
・現在のところ、文字列の大小関係は、単純にバイト列としての辞書式比較
によって定義されている
次回から5章
4章 文字列
4.10 Ruby1.9とマルチバイト文字列
から
※注意!1.9です。昨日やったのは1.8。
■Ruby1.9とマルチバイト文字列
・Ruby1.9以降は「本格的な多言語対応」
→日本語だけではない
→Unicodeだけでもない
・1.9では、文字列は「文字の列」
→1.8のようなバイト列ではない
→Stringオブジェクトは自分自身のエンコーディングを知っている
→lengthもエンコーディングを考慮して「文字の数」を返す
・特にバイナリデータを処理するため、文字列をバイト列として扱うときは
Encoding::ASCII_8BITというエンコーディングの文字列を使用する
■4.10.1 Encoding
・各種の文字エンコーディングはEncodingオブジェクトによって表現されている
→現在利用可能なエンコーディングを一覧したり:Encoding.name_list
Encodingオブジェクトを取得できる
・入出力、内部表現で関係する
■4.10.2 マジックコメント
・ソースコードがどの方式でエンコードされているかを示す
・次のようなコメント文をソース冒頭に記述
#_*_ coding: utf-8 _*_
(#は、本当は半角)
・以下のような書き方でもよい
# vim:fileencoding=UTF-8
(#は、本当は半角)
■4.10.3 内部表現
・実行時の内部エンコーディングは、オブジェクトごとにまちまち
→文字列、シンボル、正規表現は自分自身のエンコーディングを
知っている
→必ずしもソースコードのエンコーディングと一致させる
必要はない
・文字列リテラルで生成されたStringオブジェクトはデフォルトで
ソースコードと同じエンコーディング
・Stringのencodingメソッドで、コード変換できる
→非破壊メソッド。破壊的なencoding!もある
・force_encodingメソッドは、バイト表現を変化させず、エンコーディング
情報のみを変化させる
■4.10.4 文字列の結合
・エンコーディングが異なる文字列同士を結合するこちは出来ません
→エンコーディングを混ぜて文字化けすることは防止される
■文字列の同値性
・文字列、バイト表現が同値でかつエンコーディングも同じ場合に限り同値
・現在のところ、文字列の大小関係は、単純にバイト列としての辞書式比較
によって定義されている
次回から5章