** 2024/11/23 * v1.24
XCV
たくさんオプションがありますが一般的な使い方は
xcv -cm2m -f:cpfrom -t:-cpto inputfile -ooutputfile
m2f/f2mでは"m"には現在のコードページが対応しますが -L で現在のコードページ以外を指定できます
EBDCDICファイルの場合は
xcv -cb2b -f:cpfrom -t:-cpto inputfile -mf:ebcmapfile
b2m/m2bでは"m"は現在のローカルコードページで"b"はebcmapfileで指定するか-CPEB:で指定します
xcv -cb2m inputfile -cpeb:cp939
EBCDIC変換では改行コード(-Masceol/-Mseteol),DBCS SOSI処理(-Sx),-Fnn(固定長レコードサイズ)
などが関連するオプションです
Windowなど EBCDIC をサポートしていない場合、
あるいはLinuxでiconv がサポートしていないコードページの場合
ICUを導入してください。Windows11では ICU が使えるようです。
ICUでは独自の変換テーブルも追加できます。
追加の変換テーブルをICU導入ディレクトリー以外においた場合は
環境変数 ICU_DATAか xeのEBCDIC cfgファイルの ICU_DATA を指定する必要があかもしれません
(アンドロイドではICU導入ディレクトリーは保護されている可能性があります)
xcv -cb2b -f:cpfrom -t:-cpto inputfile -icu
ICUを使用している場合は swaplfnl(390std) を指定できる場合があります
(std :ebc-x15-->U0085, ebc-x25-->U000a ==> swap:ebc-x15-->U000a, ebc-x25-->U0085)
xcv -cb2m inputfile -cpeb:ibm37,swaplfnl -f80
UTF8変換の場合は m2f/f2m/b2f/f2b を使用します
u2f/f2uでは\uxxxx表記のユニコードに対応します
ユニコード関連オプションは -Y4(ucs4) -Yb(BOM read/write) -yL/nL(Little/Big Endian)。
その他の NEC/IBM,JIS83/JIS78... 等は B2S/S2B など日本語変換用のオプションです
*********************************************************************
**(Unix では "/" のではなく "-" を使用する)
*********************************************************************
xcv:V1.24(6): SJIS,JIS,EUC,UCS,UTF-8,EBCDIC
任意のiconv/ICU文字セット/WindowsCP コード変換 PGM。
format:
xcv [/options] [ infile | - ] [outfile]
infile :元ファイル名。省略するとパイプ入力。"-"は標準入力。
b2s/s2b のとき "print"と指定するとDBCS変換テーブルを出力する。
outfile :出力ファイル名。省略すると標準出力に出力。
/options :以下、大文字小文字区別なし。
/2errf :標準エラー宛先ファイル。
/[C]x2y:x2y は以下。(オプションパラメータとして最初に指定すること)
e2s/s2e: EUC<-->SJIS.
j2s/s2j: JIS<-->SJIS.
j2e/e2j: JIS<-->EUC.
e2e,s2s: EUC/SJISの半角カタカナ-->全角カタカナ変換に使用する。
b2s/s2b: EBCDIC<-->SJIS。
b2e/e2b: EBCDIC<-->EUC-Japanese。
b2a/a2b: EBCDIC<-->ASCII。(SO/SIは無視、DBCS処理せず)
b2m/m2b: EBCDIC<-->LOCAL CodePage。外部変換ツール(ICU/iconv)使用
b2f/f2b: EBCDIC<-->UTF-8 。外部変換ツール(ICU/iconv)使用
k2L/L2k: SJISの半角カタカナ(K)<-->英小文字変換(L)。
ASCII変換されたファイルを他方で再変換する。
s2u,u2s: SJIS<-->UCS.
s2f,f2s: SJIS<-->UTF-8 (8bit Unicode Translation Format).
e2f,f2e: EUC(Japanese)<-->UTF-8.
m2f,f2m: MB(LocaleCode)<-->UTF-8.
m2m/b2b: "/F:", "/T:" で指定するコード間の変換
Windowsのコードページ番号,iconv --list,uconv -lから選択
Windows Codepage, ICU では
指定可能な値は "/List" でリストされます
u2f,f2u: UCS<-->UTF-8.
/CPEB:cp :EBCDIC コードページ。 B2M/M2B用。
/Enn :変換エラーMSG最大出力。省略値=10。
/F:from:変換元コードページ。m2m/b2b で使用
#ifdef W32
省略値は "0"(CP_ACP). 65001の代わりに"UTF8"でも良い。
#else
指定がないと "locale -a"で調べて決める。
#endif
/F[nn][N]:EBCDIC ファイルが固定長。nn:LRECL(省略値=80)。
B2x(入力) 又は x2B(出力) EBCDIC ファイルのLRECL。
N: 行末8桁が行番号欄。SO/SI挿入で行長を調整する。
"N" は m2b でのみ有効。
/ICU :B2x/x2B(x:B/M/F)のとき /mf:の指定無しで ICU 使用の指定。
/MF:mapfile を指定しない場合は
uconv.exe, ICU library(.dll)にPATH を通すこと
/ICU_DATA:/Listのとき icudt*.dat を含むディレクトリーの指定。
/MF の代わりに指定
Winowsの省略値は c:\Windows\Globalization\ICU
/List :ICUコンバーター(/ICU指定時)またはWindowsコードページをリスト。
#ifdef LNX
/Llocale:m2f/f2mで使用するロケールコード。
指定がないと "locale -a"で調べて決める。
ex) -Leucjp , -Lsjis , -Liso88591
#endif
/Mxxx :マッピングオプション。
(必要なら "/mJIS78 /mNEC" のように複数指定してください。)
CP943C / MS932 / SJIS(省略値)。s2u,s2fで使用。
SJIS:Unicode=1:n のコードのときどのMappingをとるか選択する。
NEC / IBM(省略値)。u2s,f2s,b2sで使用。
SJIS:Unicode/EBCDIC=n:1 の時どの領域のSJISにMappingするか。
IBM:IBM拡張文字、NEC:NEC特殊文字ないしNEC選定IBM拡張文字。
SBCS: B2x,x2Bで使用。すべて一バイト文字として変換
ANK / CRLF / CRLFZ。B2x,x2Bで使用。
ANK:制御文字は'?'に変換。CRLF:制御文字は CR と LF のみ変換。
CRLFZ: NL(0x15) と CR+NL(0x0d15) 両方で EBC ファイルを行分割
#ifdef UNX
ASCEOL: EBCDIC ファイルの行末コードが 0x0a。省略値:0x15。
#else
ASCEOL: EBCDIC ファイルの行末コードが 0x0d0a。省略値:0x15。
#endif
SETEOL: 出力各行にEOL-IDを追加出力。m2m, x2B, レコードモード B2x用
JIS78 / JIS83(省略値)。B2x,x2Bで使用。
新JIS 旧JISを指定。新旧で28対56文字が入れ替わっている。
CP290/CP037:CP1027の代わりにCP290/CP037変換TBL使用。 B2x,x2B で使用
CP290:カタカナ拡張。CP1027:英小文字拡張。
CP037:ラテン1 と ISO-88591。
"KANA-EXT":カタカナ,"ENG-EXT":英小文字
/MF:mapfile :B2M/M2B/B2B 用マッピングパラメータファイル。
(cv コマンドの説明(xej.txt内)を参照)
/CPEB:cp で EBCDIC コードページを指定しても良い
但し、ICUを使用する場合は/ICUかこのファイル内で指定
/Ofnm :outfile パラメータに同じ。 e.g) -oOutFile
/Rx :無効な変換不能文字を置きかえる文字。/r: /r'^' 等。
省略値は '?'。u2s,f2s,B2x,x2B,m2m でのみ使用。
2 バイトヘキサ文字指定も可能。/r7f 等。
DBCS置換文字は 2 桁文字か 4 桁ヘキサ数値で指定。省略値は"?"。
両方必要なときは "/r. /r。" のように指定する。
/Sx :B2x/x2B で SO(0e)/SI(0f)の取り扱いオプション。
B2x の場合; x=d:削除。x=a:SOが行頭にあると想定。
x=r:SO/SI をスペースに置換。
B2mの場合、mappingファイルのオプションを上書きする。
x2B の場合; x=r:前後がスペースなら置換、そうでないときは挿入。
x=s:スペース置換だが、挿入分は後続のスペースを縮める。
x=d:SO/SIを設定しない。x=i:SO/SIを挿入。
m2Bの場合、mappingファイルのオプションを上書きする。
/T:to :変換先コードページ。m2m/b2b で使用
#ifdef W32
省略値は "0"(CP_ACP). 65001の代わりに"UTF8"でも良い。
#else
指定がないと "locale -a"で調べて決める。
#endif
/\u :DBCSのユニコードが\uxxxx 表記。
/Yx,/Nx:Yes/No フラグオプション、x は以下。省略値は ( )内。
4 :4 バイトユニコード(/N4)
b :UTF-8 File読みこみ時先頭 BOM をCHK,書きこみ時BOMを出力。(/Nb)
h :入力はHexコード。省略値は標準入力は/Yh 以外は/Nh。
i :M2M で ICU 使用の指定。(/Ni)
#ifdef UNX
L :Unicode File をLittleEndianで読み書きする。(/NL)
#else
L :Unicode File をLittleEndianで読み書きする。(/YL)
#endif
m :入力がMac形式(EndOfLine ID が 0x0d)。(UCS変換以外で使用).(/Nm)
q :標準入力の時1回の処理で終了する。(/Nq)
x :Hex表示で出力。Xは大文字出力。(/Nx)
z :SJIS<->EUC<->JIS変換で半角カタカナを全角カタカナにする。(/Nz)
例) xcv /cs2u sjis1 | xcv /u2s >sjis2; xcv /j2s -; xcv /cu2f /YLb ucsbe1 /of1
xcv /ce2s /yz euc1 sjis3; xcv /u2s /r"/" /mNEC ucsdata sjis1
xcv /cm2b ms932 ibm939.txt /mf:sjisebc.map /F80 /Mseteol /Masceol
(locale-->ebcdic, output LRECL=80, set ASCII-EOL-ID)
xcv /cm2b ms932 ibm939.txt /mf:sjisebc.map /Masceol /Mseteol
(locale-->ebcdic, output line with appened ASCII-EOL)
xcv /cb2m ebcf1 ascf2 /mf:sjisebc.map /F80 /Mseteol
(locale<--ebcdic, input LRECL=80, output line with appened ASCII-EOL)
xcv /cb2m ebcf1 ascf2 /mf:sjisebc.map /Masceol
(locale<--ebcdic, input line with ASCII-EOL-ID
#ifdef W32
xcv /cb2m ebcf1 ascf2 /mf:mapcv1 /CPEB:37
xcv /cm2m latin1 latin15 /Mseteol /f:28591 /t:28605
#else
xcv -cb2m ebcf1 ascf2 -mf:mapcv1 -CPEB:37
xcv -cm2m latin1 latin15 -Mseteol -f:ISO-8859-1 -t:ISO-8859-15
#endif
xcv /cm2m latin1 latin15 /Mseteol /f:28591 /t:28605
xcv /cb2b ebc1 ebc2 /Mf:ebc.map /Mseteol /f:cp930 /t:cp939
xcv /cf2b utf1 -oebc1 /Mf:xeebc.map /cpeb:cp939
xcv /cf2b utf1 -oebc1 /ICU /cpeb:ibm-37,swaplfnl /mf:cfgmap.cv1