ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 01:21

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - EUC・SJIS変換
作成者 メッセージ
  記事の件名:  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
投稿記事 Posted: 2008年2月18日(月) 02:24

全ての表示時間は UTC+09:00 です


ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean