文字コードチェック処理

機能概要

 文字コードの自動判定処理と、文字コードのチェック処理です。 文字コードは、JIS, SJIS, EUCコードに対応しています。 文字コードについての解説は、文字コードについてを参照してください。
 同じ機能の、Perlスクリプトと、C言語のプログラムがあります。 2つのソースを比較すことで、言語の違いを把握できます。 プログラムはC言語で最適化を前提として開発していますので、Perl版は遅いです。 ただ、カスタマイズして、システム固有のチェックを組み込む場合には便利です。
 Unicode(UTF-8,UTF-16)対応版は、2000年3月公開を目標に開発中です。

ファイル構成

 文字コードチェック処理には、以下のファイルがあります。 ファイル名をクリックするとダウンロードできます。
 一括ダウンロード(code.tar.gz)もできます。

Perl版C言語版説明
getcode.pl getcode.c 文字コードの自動判定コマンド
chkcode.pl chkcode.c 文字コードのチェックコマンド
chkstr.pl chkstr.c 文字コードチェックライブラリ
  isfile.c ファイルタイプチェックライブラリ
  makefile メイクファイル

インストール方法

 展開、インストールは、以下の手順で行います。

/usr/local/pub ダウンロードしたファイルを格納する場所
/usr/local/src ファイル展開、メイクなどを実施する場所

unix# cd /usr/local/src
unix# gzip -cd ../pub/code.tar.gz | tar -xvf -
unix# cd code
unix# make
unix# cp getcode chkcode /usr/local/bin/.

ツールの機能仕様

文字コード判定ツール

 指定したファイルの文字コードを判断し、ファイル名と文字コードを表示します。

getcode.c
/********************/
/* 文字コードの判定 */
/********************/
名前
 ファイルの文字コードの自動判定
形式
 getcode files
機能
 指定したファイルの文字コードを判断し、ファイル名と文字コードを表示する。
出力
 ASCII text
 JIS text
 SJIS text
 EUC text
 Unknown(EUC/SJIS) text
 Binary file
制限事項

文字コードチェックツール

 ファイルの中の文字コードが正しいかどうかをチェックし、異常なデータを表示します。
 -dオプションを付けると、機種依存文字を使用しているかどうかのチェックも行います。

getcode.c
/************************/
/* 文字コードのチェック */
/************************/
名前
 ファイルの文字コードチェック
形式
 chkcode [options] files
機能
 指定したファイルの文字コードをチェックし、異常データを表示する。
オプション
 -a: ASCIIコードとしてチェック
 -j: JISコードとしてチェック
 -s: ShiftJISコードとしてチェック
 -e: EUCコードとしてチェック
 -d: 機種依存文字チェック
制限事項

 文字コードの自動判定は、chk1st関数で、文字列の値から文字コードが決定されるものを探します。 特定できない場合は、SJISコードと、EUCコードに対して、チェックします。 文字列の値によっては、SJISコードと、EUCコードの自動判定ができない場合があります。

文字コードチェックライブラリの関数

 文字コードのチェックは、それぞれの文字コードのマルチバイト毎のチェックをします。 各バイト毎の正しい値は、文字コードについてを参照してください。

chkstr.c
/**********************/
/* 文字コード判定処理 */
/**********************/
getcode(str)
機能
 日本語文字列の文字コードの自動判定
引数
 char *str; /* 文字列 (i) */
返却値
 0: 不定
 1: euc
 2: sjis
 3: jis
制限事項


/******************/
/* 文字種判定処理 */
/******************/
chk1st(buf, len)
機能
 文字種判定処理
引数
 char *buf; /* チェックデータ格納バッファ */
 int len;   /* チェックデータサイズ */
返却値
 0: ASCII
 1: JIS
 2: SJIS
 3: EUC
 4: Unknown(EUC/SJIS)
 -1: Binary


/***********************/
/* ASCIIコード判定処理 */
/***********************/
chkasc(buf, len)
機能
 ASCIIコード判定処理
引数
 char *buf; /* チェックデータ格納バッファ */
 int len;   /* チェックデータサイズ */
返却値
  0: OK
 -1: NG


/*********************/
/* JISコード判定処理 */
/*********************/
chkjis(buf, len)
機能
 JISコード判定処理
引数
 char *buf; /* チェックデータ格納バッファ */
 int len;   /* チェックデータサイズ */
返却値
 0000: ASCII
 0001: JIS漢字
 0010: JISカナ
 0100: JIS漢字(NEC拡張外字)
 1000: JIS漢字(機種依存)
   -1: NG


/**********************/
/* SJISコード判定処理 */
/**********************/
chksjis(buf, len)
機能
 SJISコード判定処理
引数
 char *buf; /* チェックデータ格納バッファ */
 int len;   /* チェックデータサイズ */
返却値
 0000: ASCII
 0001: JIS漢字
 0010: JISカナ
 0100: JIS漢字(NEC拡張外字)
 1000: JIS漢字(機種依存)
   -1: NG


/*********************/
/* EUCコード判定処理 */
/*********************/
chkeuc(buf, len, stat)
機能
 EUCコード判定処理
引数
 char *buf; /* チェックデータ格納バッファ */
 int len;   /* チェックデータサイズ */
 int stat;  /* 最終バイトの状態 */
             /*  0: 文字の最後 */
             /*  1: JISカナの1バイト目 */
             /*  2: JIS漢字の1バイト目 */
返却値
 0000: ASCII
 0001: JIS漢字
 0010: JISカナ
 0100: JIS漢字(NEC拡張外字)
 1000: JIS漢字(機種依存)
   -1: NG

ファイルタイプチェックライブラリの関数

 ファイルの種類を判定します。 通常ファイルとディレクトリかどうかを判定することができます。
 Perlやシェルの -e や -d の機能に相当する関数です。

isfile.c
/**************************/
/* ファイルタイプ判定処理 */
/**************************/
isfile(path)
機能
 パスが通常ファイルかどうかを判定する
引数
 char *path; /* パス名 (i) */
返却値
 0: 通常ファイル
 1: 通常ファイル以外


/************************/
/* ディレクトリ判定処理 */
/************************/
isdir(path)
機能
 パスがディレクトリかどうかを判定する
引数
 char *path; /* パス名 (i) */
返却値
 0: ディレクトリ
 1: ディレクトリ以外


Copyright (C)1998-1999 ASH multimedia lab.
mail : info@ash.jp