文字コード

概要

参考:

Ruby のエンコーディング | @tmtms のメモ

Ruby の内部文字コードは UTF-8 ではない…だと…?! | TechRacho

Ruby 1.9 時代の文字化け対策 #1 – Qiita

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)

参考:

Rails テンプレートにはマジコメ必要 – Qiita

rails/rails.rb at v5.2.3 · rails/rails – GitHub

encoding – 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

文字コードの判別

参考:

文字コードの判別 | deadwood

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_internalnil 以外であれば、それを暗黙的な変換先として: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!

参考:

Ruby 2.1.0 に追加される不正なバイト列を除去する String#scrub の紹介 | sonots:blog

invalid byte sequence in UTF-8 に String#scrub で対応 | EasyRamble

String#scrub | Ruby リファレンスマニュアル [公式]

String#scrub! | Ruby リファレンスマニュアル [公式]

 SJIS と Shift_JIS

参考:

Ruby の SJIS は Shift_JIS じゃない – Qiita

Ruby で Shift_JIS のファイルを扱う 1.9.3 / 2.0 系対応版 | TechRacho

Shift_JIS サイトを Nokogiri でパースするときにはエンコード指定/CP932 指定推奨 – Qiita

Shift_JIS のダメ文字 | fudist

UTF-8 → CP932 / Shift_JIS 変換表 | fudist

CP51932

Windows で用いられる日本語 EUC の亜種

参考:

Encoding::CP51932 | Ruby リファレンスマニュアル [公式]

ファイルの読み書き

参考:

異なるエンコーディングでのファイル書き出しと読み込み – Qiita

エンコード指定でファイル入出力 | 備忘録的な blog

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 例外を発生させなくするには | ぺけみさお

Ruby でエンコードのエラーの対処 – Qiita

invalid byte sequence in Windows-31J というエラーが出る場合 | まくまくノート

File.readlines invalid byte sequence in UTF-8 (ArgumentError) – Stack Overflow

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA