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

■ナビゲータ

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

  1. [Windows版Perlの細道・けもの道]
    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.文字コードの変換(Encodeモジュール利用)]
        2. [3-5-2.文字コードの変換(perl IO レイヤ使用)]
        3. [3-5-3.文字コードの変換(open プラグマ 使用)]
      6. [3-6.半角全角変換]
      7. [3-7.多次元配列の処理]
      8. [3-9.その他]
    4. [スクリプトと入力データのサンプル]
rubyではどう処理する?
同じことをrubyではこうしています。

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.文字コードの変換(Encodeモジュール利用)]
  2. Encodeモジュール使って、文字コードを変換するスクリプトについて解説します。

  3. [3-5-2.文字コードの変換(perl IO レイヤ使用)]
  4. perl IO レイヤを使って、文字コードを変換するスクリプトについて解説します。

  5. [3-5-3.文字コードの変換(open プラグマ 使用)]
  6. open プラグマを使って、文字コードを変換するスクリプトについて解説します。




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