文字コード
参考:
Ruby の内部文字コードは UTF-8 ではない…だと…?! | TechRacho
Ruby 1.9 時代の文字化け対策 (その1) – Qiita
Ruby M17N の設計と実装 | Ruby Magazine (るびま)
デフォルトのスクリプトエンコーディング
Ruby 2.0 以降、マジックコメントの書かれていないファイルのおける文字列リテラルのエンコーディング (default script encoding) は UTF-8 となる。
参考:
デフォルトのスクリプトエンコーディングの変更 – Ruby 2.0.0 の注意点やその他の新機能 | Rubyist Magazine (るびま)
ruby – Why is the default encoding in Rails not UTF-8? – Stack Overflow
Ruby on Rails
Ruby on Rails では標準の文字コードは UTF-8 に設定されている
# UTF-8 is the default internal and external encoding. silence_warnings do Encoding.default_external = Encoding::UTF_8 Encoding.default_internal = Encoding::UTF_8 end
参考:
rails/rails.rb at 20c91119903f70eb19aed33fe78417789dbf070f · rails/rails
encoding – Set UTF-8 as default for Ruby 1.9.3 – Stack Overflow
マジックコメント
# coding: utf-8
Ruby 2.0 以降では、エンコードを指定しなかった場合は UTF-8 として扱われる。
参考:
衝撃の事実!? “# -*- encoding: utf-8 -*-“じゃなくてもいいんです!- Qiita
文字コードの判別
参考:
Ruby でファイルエンコーディングを確認する | SHOYAN BLOG
文字コードの変換
参考:
Ruby/Rails で文字コードの変換 (エンコード) とエンコーディングの確認方法のまとめ | Rails Webook
文字エンコードに悩まされ、直接指定や nkf による推測などを試した – Qiita
Kconv
参考:
NKF
参考:
String#encode
self
を指定したエンコーディングの文字列に変換して返す。第2引数が与えられた場合、変換元のエンコーディングとして使われる。変換元のエンコーディングが省略された場合、 self
のエンコーディングが使われる。
引数が指定されなかった場合に、Encoding.default_internal
が nil
以外であれば、それを暗黙的な変換先として:invalid => :replace
と :undef => :replace
が指定されたとみなして変換される。Encoding.default_internal
が nil
であれば暗黙的な変換は行われない。
encode(encoding, options = nil) -> String encode(encoding, from_encoding, options = nil) -> String encode(options = nil) -> String
参考:
instance method String#encode (Ruby 2.5.0)
Encoding
参考:
scrub/scrub!
参考:
Ruby 2.1.0 に追加される不正なバイト列を除去する String#scrub の紹介 | sonots:blog
invalid byte sequence in UTF-8にString#scrubで対応 | EasyRamble
instance method String#scrub (Ruby 2.5.0)
instance method String#scrub! (Ruby 2.5.0)
SJIS と Shift_JIS
参考:
Ruby の SJIS は Shift_JIS じゃない – Qiita
Ruby で ShiftJIS のファイルを扱う (1.9.3, 2.0系対応版) | TechRacho
Shift_JIS サイトを Nokogiri でパースするときにはエンコード指定 (CP932 指定推奨) – Qiita
UTF-8 → cp932 (Shift_JIS) 変換表 | fudist
invalid byte sequence in UTF-8 (ArgumentError)
参考:
File.readlines invalid byte sequence in UTF-8 (ArgumentError) – Stack Overflow
ファイルの読み書き
参考: