|
概要
フィールド区切り文字に後述の特定文字を指定し、SJISコードの可変長ファイルをフォーマット参照型コード変換(以下、xtconv)で変換すると、特定の日本語文字の入ったフィールド以降のデータの変換結果が不正となります。
※フィールド区切り文字として以下の文字を指定したときに発生する可能性があります。
| "@" |
(アットマーク:0x40) |
| "[" |
(左ブラケット:0x5b) |
| "¥" |
(円マーク:0x5c) |
| "]" |
(右ブラケット:0x5d) |
| "^" |
(アクサンシルコンフレックス:0x5e) |
| "_" |
(アンダー・バー:0x5f) |
| "`" |
(バッククォート:0x60) |
| "{" |
(左ブレイス:0x7b) |
| "|" |
(パイプ:0x7c) |
| "}" |
(右ブレイス:0x7d) |
| "~" |
(チルダ:0x7e) |
解説
SJIS2バイト文字は2バイト目に0x40-7e,0x80-fcのエリアが割り当てられているため、1バイト文字コードに割り当てられているエリアと重複しています。
xtconv はフィールド区切り文字と一致する文字コードまでを1フィールドとして判断し、データの切り出しを行っています。
このため、上記1バイトコードをフィールド区切り文字に指定すると、データ中の日本語2バイト文字の2バイト目がフィールド区切り文字と一致する可能性があり、当該文字以降のデータの変換結果が不正となります。
本現象はSJIS可変長ファイルを変換した場合にのみ発生します。
EUC可変長ファイルではEUC2バイト文字2バイト目に割り当てられている文字コードが、1バイト文字コードに割り当てられているエリアとは重複しないため発生いたしません。
対策
上記1バイトコードをフィールド区切り文字として使用しないで下さい。
状況
弊社ではこの問題をNISMAILの問題と認識しております。
なお、この問題は以下のバージョンで修正済みです。
- NISMAIL/NT Version 5.0 Release 1.0
- NISMAIL/UX Version 5.0 Release 3.5
- NISMAIL/Linux Version 5.0 Release 3.5
|