ab.com コミュニティ
https://www.activebasic.com/forum/

EUC・SJIS変換
https://www.activebasic.com/forum/viewtopic.php?t=2315
ページ 11

作成者:  まっ [ 2008年2月18日(月) 02:24 ]
記事の件名:  EUC・SJIS変換

''''' EucJis EUC・SJIS変換
Function ZEUCJIS(ZSTR as string) as string
Dim ZLEN as long , ZCNT as long , ZCHR as string , ZEUC as long , ZHLF as long , ZMOD as long
ZEUCJIS="" : ZLEN=Len(ZSTR)
For ZCNT=1 to ZLEN : ZCHR=ZSTRMID(ZSTR,ZCNT,1) : ZEUC=Asc(ZCHR)
Do : If ZEUC=142 then Exit Do else If ZEUC<161 then ZEUCJIS=ZEUCJIS+Chr$(ZEUC) : Exit Do else ZHLF=Int(ZEUC/2) : ZMOD=ZEUC-(ZHLF*2) : If ZEUC<=222 then ZEUCJIS=ZEUCJIS+Chr$(ZEUC-ZHLF+48) else ZEUCJIS=ZEUCJIS+Chr$(ZEUC-ZHLF+112)
ZCNT=ZCNT+1 : ZCHR=ZSTRMID(ZSTR,ZCNT,1) : ZEUC=Asc(ZCHR) : If ZMOD=0 then ZEUCJIS=ZEUCJIS+Chr$(ZEUC-2) : Exit Do else If ZEUC<=223 then ZEUCJIS=ZEUCJIS+Chr$(ZEUC-97) : Exit Do else ZEUCJIS=ZEUCJIS+Chr$(ZEUC-96)
Exit Do : Loop
Next ZCNT
End Function

戻値 ZEUCJIS
引数 ZSTR の EUCの文字部分だけSJISに変換します。
EUC文字が無い場合は 戻値ZEUCJIS は 引数ZSTR と同等となります。
まぁ、詳しくはわかんないけど、Yahooとか、EUC文字を使用するホームページからのページ内容を読みたいときとか、日本語部分を(標準)テキストに変換したい場合に使えます。

引数 ZSTR
-

初心者でござる。型使用や浅いルーチン使用は勘弁くだされ。

EUCに該当するSJISが重複するコードが存在するようですが、考えた末に無視する事にしました。判別の基準を決められない事と、処理分岐の複雑化に見合わない理由です。通常利用では支障は無いかと。。。と思います。

''''' StringMiddle 文字列・中・任意範囲
Function ZSTRMID(ZSTR as string, ZPNT as long, ZLEN as long) as string
ZSTRMID="" : If ZSTR="" or ZPNT<1 or ZLEN<1 then Exit Function
Dim ZSSS as long , ZLLL as long
ZSSS=Len(ZSTR) : If ZSSS<ZPNT then Exit Function
ZLLL=ZSSS-ZPNT+1 : If ZLLL>ZLEN then ZLLL=ZLEN
ZSTRMID=ZeroString(ZLLL) : memcpy(StrPtr(ZSTRMID),StrPtr(ZSTR)+ZPNT-1,ZLLL)
End Function

ページ 11 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/