■Windows版Rubyの細道・けもの道

■ナビゲータ

[南北館(最初のメニュー)]

  1. [Windows版Rubyの細道・けもの道]
    1. [1.準備編]
    2. [2.基本編]
    3. [3.応用編]
      1. [3-1.固定長データとCSVデータとの変換]
      2. [3-2.重複データの処理]
      3. [3-3.フォルダ内の一括処理]
      4. [3-4.1つのファイルを複数のファイルに分割する]
      5. [3-5.文字コードの変換]
        1. [3-5-1.文字コードの変換(kconvライブラリ利用)]
        2. [3-5-2.文字コードの変換(nkfライブラリ利用)]
        3. [3-5-3.文字コードの変換(encode利用)]
        4. [3-5-4.外部エンコーディングと内部エンコーディングによる変換]
      6. [3-6.半角全角変換]
      7. [3-7.多次元配列の処理]
      8. [3-9.その他]
    4. [スクリプトと入力データのサンプル]
Perlではどう処理する?
同じことをPerlではこうしています。

3.応用編

3-5.文字コードの変換

一般に、Windowsでは、入力ファイルがシフトJISの形式になっていることが多いようですが、漢字コードが含まれていた入力ファイルを処理する場合、文字化けを起こしてしまうことがあります。これは、これはシフトJISの漢字コードに"\"(16進コードで"5C")や"@"(16進コードで"40")が含まれている場合に発生する現象です。

具体的には、はシフトJISの漢字コードに"\"(16進コードで"5C")を含む漢字である「—ソЫⅨ噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭」の各文字と、シフトJISの漢字コードに"@"(16進コードで"40")を含む漢字である「ァА院魁機掘后察宗拭繊叩邸如鼻法諭蓮僉咫奸廖戞曄檗漾瓠磧紂隋蕁襦蹇錙顱鵝」の各文字と全角スペースになります。これらの文字を含んでいる場合、文字化けを起こしてしまいます。

また、スクリプトでは、[2-4-2.CSVファイルの文字列型昇順ソート(並べ替え)]でソート(並べ替え)キーに半角文字(1バイト文字)の英数字以外を使ったり、[3-1-2.固定長データをCSVデータに変換する]で入力データに全角文字(2バイト文字)を含んでいるときなどに 文字化けが起こりやすくなります。

こうしたことを防ぐため、入力ファイルの文字コードを変更することになります。手作業で入力ファイルを「名前をつけて保存」して、「入力コード」や「エンコード」(テキストエディタによって異なります)の部分を変更しても良いのですが、スクリプトを使って行うのが、以下紹介する方法です。

  1. [3-5-1.文字コードの変換(kconvライブラリ利用)]
  2. kconvライブラリを使って、文字コードを変換するスクリプト(半角カタカナを全角カタカナに自動的に変換)について解説します。

  3. [3-5-2.文字コードの変換(nkfライブラリ利用)]
  4. nkfライブラリを使って、文字コードを変換するスクリプト(半角カタカナを全角カタカナに変換するかどうか指定可能)について解説します。

  5. [3-5-3.文字コードの変換(encode利用)]
  6. encodeを使って、文字コードを変換するスクリプト(半角カタカナを全角カタカナに変換しない)について解説します。

  7. [3-5-4.外部エンコーディングと内部エンコーディングによる変換]
  8. openメソッドに外部エンコーディングと内部エンコーディングを設定して、入力ファイルの文字コードを変換するスクリプト(半角カタカナを全角カタカナに変換しない)について解説します。




Copyright (c) 2011-2013 Mitsuo Minagawa, All rights reserved.