文字コード変換をカスタマイズすることができます。
下記コマンドは、Charset Managerをインストールしたディレクトリ配下のwconv配下に存在します。
注意
ユーザーアカウント制御が有効な環境で本機能を利用する場合、コマンドプロンプトを「管理者として実行」で実行してください。
ユーザーアカウント制御については、次のように設定されている状態を前提としています。
「ユーザーアカウント制御」が有効
「アプリがコンピューターに変更を加えようとする場合のみ通知する(既定)」に設定されている
なお、「ユーザーアカウント制御」の有効/無効や、その動作に関連する設定については、各OSのヘルプでその影響などをよくご確認ください。
管理者権限で実行しないと、以下の出力先ディレクトリが仮想化によって、ユーザごとの設定保存場所にリダイレクトされます。
Charset Managerのインストール先ディレクトリ\wconv\table
例:C:\Program Files\CharMGR\wconv\table
名前
wconvcust - 文字コード変換カスタマイズ
形式
wconvcust -jef jefcode wconvcust -sjis sjiscode wconvcust -cs1 codeset1 -cs2 codeset2 -c1 code1 -c2 code2 [-ov overwrite] wconvcust -p ctlfile [-ov overwrite] [-repchar_usr1 repchar1 -repchar_usr2 repchar2]
機能説明
wconvcustコマンドは、JEFコード系との変換において、字形重視/領域重視のどちらで変換を行うかを選択できます。また、SJISコード系との変換において、SJISコード系をSJIS(MS)として変換を行うか、SJIS(R90)として変換を行うかを選択できます。
さらに、各コード系組み合わせにおけるコードの変換対応を直接変更することができます。また、変換対応定義を記述したファイルを指定して、コードの変換対応を変更することができます。
オプション
JEF コード系との変換において、字形重視で変換を行うか、領域重視で変換を行うかを指定します。jefcode には、以下のいずれかの値を指定します。
インストール時のデフォルトは、JEFAUGです。
字形重視
領域重視
SJISコード系との変換において、SJISコード系をSJIS(MS)として変換を行うか、SJIS(R90)として変換を行うかを指定します。sjiscodeには、以下のいずれかの値を指定します。
インストール時のデフォルトは、SJIS(MS)です。
SJIS(MS)
SJIS(R90)
コードの対応定義を変更するコード系です。
コードの対応定義を変更するコード系です。
codeset1とcodeset2の組み合わせにおける文字コード変換の変換対応を変更します。
上書きをするかどうかを指定します。
変換元の文字コードに対応する変換先文字コードがすでに定義されている場合、その文字コードの対応定義を変更するかどうかを指定します。以下のいずれかの値を指定します。
デフォルトは、0(上書きする)です。
上書きする
上書きしない
ctlfile には、変換対応定義を記述した制御文ファイルを、絶対パスまたは相対パスで指定します。文字コード変換カスタマイズ機能は、ctlfileで指定された制御文ファイルに従ってカスタマイズを行います。ctlfileがない場合は、エラーになります。
CDS_USR1とCDS_USR2のカスタマイズを行う場合に有効となります。
CDS_USR1とCDS_USR2については、“2.2 文字コードの種類”を参照してください。
使い方の詳細は、“付録B 他社ベンダ文字コード系の変換”の“2)文字コード変換テーブルを作成する”を参照してください。
オペランド
対応を定義するcodeset1のコードです。
対応を定義するcodeset2のコードです。codeset1のcode1とcodeset2のcode2の対応を定義します。
codeset1からcodeset2への変換において、code1が入力されたらcode2に変換します。
逆に、codeset2からcodeset1への変換において、code2 が入力されたらcode1に変換します。
ctlfileファイルの書式
変換対応定義を記述するファイルの書式です。すべてASCIIコードの文字列で記述します。
1 カラム目は制御記号欄とし、2 カラム目から72カラム目に制御文、または文字コード対応定義式を記述します。1 カラム目には、次の制御記号のうち、いずれか1つを指定します。
この行を制御文または文字コード対応定義データとして扱います。
この行をコメントとして扱います。
以下の制御文が必要となります。
入力レコード書式を指定します。
DEFCDPR 制御文は、文字コード変換対応を変更するコード系を定義し、本制御文に続く文字コード対応定義データに示される対応を、文字コード変換表に定義するものです。
本制御文の記述は、以下の形式とします。
DEFCDPR 文字コード系の種類1・文字コード系の種類2
変換対応を変更する文字コード系の組み合わせを、文字コード系の種類で指定します。
文字コード系の種類には、“2.2 文字コードの種類”のうち、いずれか1つを記述します。
文字コード系の種類 1と、文字コード系の種類 2の間の文字コードの変換対応を変更します。
なお、各項目の区切りは半角のブランクで行います。
本制御文の直後には、文字コード対応定義データが指定されていなくてはなりません。
文字コード対応定義データは、DEFCDPR制御文の次のレコードから始まり、次の制御文の直前のレコードまでを認識します。次の制御文がない場合は、最終レコードまでを文字コード対応定義データとして認識します。
文字コード系の種類1に対応する文字コードの指定は、単一指定と範囲指定が可能です。
文字コード対応定義データの記述は、以下の形式とします。
単一指定
文字コード1:文字コード2
範囲指定
先頭文字コード-最終文字コード:文字コード2
文字コード1には、変換対応を対応付ける文字コード系の、種類1の文字コード1文字分を16進で指定します。
文字コード2には、変換対応を対応付ける文字コード系の、種類2の文字コード1文字分を16進で指定します。
先頭文字コード-最終文字コードは、変換対応を対応付ける文字コードが連続した範囲である場合、その範囲の先頭文字コードと最終文字コードをハイフン(-)で結んで指定します。この場合、変換先の文字コードは、文字コード2を先頭とする連続した文字コードが、指定範囲にある文字数だけ対応関係が定義されます。このとき、変換先コードの1バイト目が同じとなる範囲で区切って指定をしてください。
なお、先頭文字コード≦最終文字コードでなくてはなりません。
また、ハイフン(-)およびコロン(:)の前後に空白を入れることはできないので注意してください。
注意
UTF8のコードをカスタマイズする場合、文字コード系の種類にはCDS_UCS2を指定し、文字コードもUCS2のコード値で指定してください。
文字コード対応定義データに指定可能な文字コードは、各文字コード系の未定義文字を除いた範囲です。未定義文字を指定してカスタマイズを行っても、無視され、カスタマイズされません。
文字コードの桁数は、各文字コードのバイト数にしたがい、以下のように記載してください。
1バイト :2桁
2バイト :4桁
3バイト :6桁
各コード系のバイト数については、“1.2.2 文字コード変換”の“文字コード項目のデータ型”を参照してください。
例
JEFとシフトJISの双方向変換の例
DEFCDPR CDS_SJIS CDS_JASCII FA40:77EB FA41:77EC FA42:77ED
使用例
次の例は、JEFからSJISへの変換において、JEFの0x77EBをSJISの0xFA40へ変換するように、文字コード変換対応を変更します。
また、SJISからJEFへの変換において、SJISの0xFA40をJEFの0x77EBへ変換するように、文字コード変換対応を変更します。
例
example% wconvcust -cs1 CDS_JASCII -cs2 CDS_SJIS -c1 77EB -c2 FA40 -ov 0
終了ステータス
以下の終了ステータスが返されます。
正常終了
エラーが発生した
エラーメッセージ
1 | usage: wconvcust -cs1 codeset1-cs2 codeset2 -c1 code1 -c2 code2 [-ov overwrite] wconvcust -p ctlfile [-ov overwrite] [-repchar_usr1 repchar1 -repchar_usr2 repchar2] wconvcust -jef jeftype wconvcust -sjis sjistype | |
【意味】 | パラメタエラーです。 | |
【対処】 | パラメタを見直してください。 | |
2 | wconvcust: installation incomplete | |
【意味】 | 環境の取得に失敗しました。 | |
【対処】 | インストールに失敗している可能性があります。再インストールしてください。 | |
3 | Not supported | |
【意味】 | 以下のいずれかです。
| |
【対処】 | 変換元コード系と変換先コード系を見直してください。 | |
4 | Not enough memory | |
【意味】 | メモリが不足しました。 | |
【対処】 | 後ほど処理してよいアプリケーションを終了させてから、再度実行してください。 | |
5 | Permission denied | |
【意味】 | 変換テーブルまたは制御文ファイルのアクセスが許可されていません。 | |
【対処】 | コマンドを実行するユーザの権限について、以下の観点で確認し、それぞれの対処を行ってください。
→ない場合、変換テーブルに書き込み権限があるユーザでコマンドを実行してください。
→ない場合、制御文ファイルに読み込み権限があるユーザでコマンドを実行するか、実行するユーザに対して制御文ファイルの読み込み権限を付加してください。 | |
6 | Table busy | |
【意味】 | 他のアプリケーションで、変換テーブルまたは制御文ファイルを使用中です。 | |
【対処】 | しばらく経ってからやり直してください。 | |
7 | invalid request code | |
【意味】 | 制御文ファイルに指定されたコードが不正です。 | |
【対処】 | 制御文ファイルを見直してください。 | |
8 | invalid option | |
【意味】 | 指定された制御文ファイルの書式が誤っています。 | |
【対処】 | "ctlfileファイルの書式"を参照して、制御文ファイルを確認してください。 | |
9 | wconvcust: (errorcode) : error. | |
【意味】 | 内部エラーです。 | |
【対処】 | errorcodeが"5"の場合、制御文(コメント行は除く)の中にASCIIコードでない文字を使用している可能性があります。制御文はASCIIコードの文字列で記述してください。 |
参考
拡張データ変換機能を使用して、文字コード変換を行う場合の変換の優先順位は、制御文ファイルで定義する順番を変えることで、変更することが可能です。
N対1の変換を定義して、N個側への変換を行う場合、最後に定義された変換対応が有効になります。
拡張データ変換機能をそのまま使用したときに、外字を変換できない場合があります。その場合は、文字コード変換カスタマイズ機能を使用してコードの変換対応を変更することで、変換することが可能となります。
文字コード変換テーブルを初期状態に戻すには、以下のファイルをインストール媒体(CD)のWindow\wconv\tableから、Charset Managerインストールディレクトリ\wconv\table配下にコピーしてください。コピー後、ファイルのプロパティで読み取り属性のチェックを外してください。
ec2ja ec2jc ec2ms ec2r9 ibmjef ibmjips ibmkeis ibmms ibms90 ibmucs2 ja2ec ja2ms ja2r9 ja2s9 | ja2u9 jc2ec jc2ms jc2r9 jc2s9 jc2u9 jipsjef jipsms jipss90 jipsucs2 keisjef keisjips keisms keiss90 | keisucs2 ms2ec ms2ja ms2jc ms2s9 ms2u2 ms2u2le ms2u9 r92ec r92ja r92jc r92s9 r92u2 r92u2le | r92u9 s92ja s92jc s92ms s92r9 u22ms u22r9 u2le2ms u2le2r9 u92ja u92jc u92ms u92r9 |
文字コードの設定値がどうなっているか(どの文字コードへ変換されるか)は、実際に変換することで確認できます。
文字コード変換テーブルが初期状態になったかどうかは、カスタマイズした文字コードを変換し、カスタマイズされた状態になっていないことで、ご確認ください。
例
コード系の変換例として、KEISからJEFに変換後、JEFからKEISに変換する方法を以下に示します。
制御文Aでの変換 | 制御文Bでの変換 | |
---|---|---|
制御文 | DEFCDPR CDS_USR1 CDS_USR2(※) 5bd9:b5c8 b5c8:b5c8 | DEFCDPR CDS_USR1 CDS_USR2(※) b5c8:b5c8 5bd9:b5c8 |
変換(1) (KEIS→JEF) | 5bd9 → b5c8 b5c8 → b5c8 | b5c8 → b5c8 5bd9 → b5c8 |
変換(2) (JEF→KEIS) | b5c8 → b5c8 | b5c8 → 5bd9 |
※ USR1:KEIS、USR2:JEF
制御文ファイルを、“制御文Bでの変換”のように変えることで、JEFのb5c8はKEISの5bd9に変換されるようになります。他のコード系を変換する場合も、同様の手順で優先順位の変更を行うことができます。
注意
文字コード変換カスタマイズ機能は、コマンドのみです。関数APIはありません。(プログラムから直接呼び出すことはできません。)