概要
参考:
Ruby の内部文字コードは UTF-8 ではない…だと…?! | TechRacho
Ruby M17N の設計と実装 | Ruby Magazine
デフォルトのスクリプトエンコーディング
Ruby 2.0 以降、マジックコメントの書かれていないファイルのおける文字列リテラルのエンコーディング (default script encoding) は UTF-8 となる。
参考:
デフォルトのスクリプトエンコーディングの変更 | Rubyist Magazine
Ruby で UTF-8 なのにマジックコメントが必要なケース – Qiita
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
Code language: Ruby (ruby)
コード:
参考:
Set UTF-8 as default for Ruby 1.9.3 – Stack Overflow
マジックコメント
# coding: utf-8
Code language: Ruby (ruby)
Ruby 2.0 以降では、エンコードを指定しなかった場合は UTF-8 として扱われる。
参考:
衝撃の事実!? # -*- encoding: utf-8 -*- じゃなくてもいいんです!- Qiita
Ruby で UTF-8 なのにマジックコメントが必要なケース – Qiita
Ruby 1.9 以降での日本語の扱い方まとめ | Qoosky
文字コードの判別
参考:
Ruby でファイルエンコーディングを確認する | SHOYAN BLOG
文字コードの変換
参考:
Ruby / Rails で文字コードの変換/エンコードとエンコーディングの確認方法のまとめ | Rails Webook
文字エンコードに悩まされ、直接指定や NKF による推測などを試した – Qiita
文字の表現/変換
参考:
ord / chr / bytes / unpack / codepoints – ASCII コードと文字を変換する | まくまくノート
Kconv
ドキュメント:
module Kconv | Ruby リファレンスマニュアル [公式]
NKF
ドキュメント:
module NKF | Ruby リファレンスマニュアル [公式]
文字コードを UTF-8 に変換する
文字列の文字コードを UTF-8 に変換する。(半角カナは全角に変換され、MIME エンコードされた文字列を展開する。)
Kconv.toutf8(str)
Code language: Ruby (ruby)
文字列の文字コードを UTF-8 に変換する。(半角カナ、及び、MIME エンコードされた文字列をそのまま維持する。)
NKF.nkf("-wxm0", str)
Code language: Ruby (ruby)
ドキュメント:
Kconv.#toutf8 | Ruby リファレンスマニュアル [公式]
NKF.#nkf | Ruby リファレンスマニュアル [公式]
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
ドキュメント:
String#encode | Ruby リファレンスマニュアル [公式]
Encoding
ドキュメント:
class Encoding | Ruby リファレンスマニュアル [公式]
scrub / scrub!
ドキュメント:
String#scrub | Ruby リファレンスマニュアル [公式]
String#scrub! | Ruby リファレンスマニュアル [公式]
参考:
Ruby 2.1.0 に追加される不正なバイト列を除去する String#scrub の紹介 | sonots:blog
invalid byte sequence in UTF-8 に String#scrub で対応 | EasyRamble
SJIS と Shift_JIS
参考:
Ruby の SJIS は Shift_JIS じゃない – Qiita
Ruby で Shift_JIS のファイルを扱う 1.9.3 / 2.0 系対応版 | TechRacho
Shift_JIS サイトを Nokogiri でパースするときにはエンコード指定/CP932 指定推奨 – Qiita
UTF-8 → CP932 / Shift_JIS 変換表 | fudist
CP51932
Windows で用いられる日本語 EUC の亜種
ドキュメント:
Encoding::CP51932 | Ruby リファレンスマニュアル [公式]
ファイルの読み書き
参考:
異なるエンコーディングでのファイル書き出しと読み込み – Qiita
incompatible character encodings エラー
ドキュメント:
class Encoding::CompatibilityError | Ruby リファレンスマニュアル [公式]
参考:
Encoding::CompatibilityError が直せない – teratail
incompatible character encodings – Stack Overflow
invalid byte sequence エラー
参考:
UTF-8として不正な文字を除去する/invalid byte sequence in UTF-8 例外を発生させなくするには | ぺけみさお
invalid byte sequence in Windows-31J というエラーが出る場合 | まくまくノート
File.readlines invalid byte sequence in UTF-8 (ArgumentError) – Stack Overflow