算術で作り出したSHIFT-JISコードを表示時にUTF8に変換しています。
強制SHIFT-JISモードをオフに設定して実行してください。
// UTF8版 /* SHIFT-JIS 全文字コード表示プログラム // テキスト画面がスクロールできないのでページ切り替え font("Migu 1M") int fzenhan:// YES= width(64,,fzenhan) print "fzenhan=";fzenhan cls() if isLocalizeJapan() then { setFunctionKey(0,"次へ",&h0d) setFunctionKey(1,"中断",&h1b) print "半角文字" } else { setFunctionKey(0,"Next",&h0d) setFunctionKey(1,"Break",&h1b) print "Half-Width Character" } print_code0(fzenhan) // displayFunctionKey(YES,0,1) // while YES if print_code(&h8100,&h9fff) then break if print_code(&he000,&hefff) then break print_head() break endwhile // // ファンクションキー表示は個数を変えても自動的に前の表示は消えないので、 // ユーザーが消す必要がある(そうしないと表示が重なる) displayFunctionKey(NO,0,1) if isLocalizeJapan() then { setFunctionKey(0,"終了",&h0d) } else { setFunctionKey(0,"End",&h0d) } displayFunctionKey(YES,0,0) int ky repeat ky=inkey() until ky<>0 end //-------------------------------- func print_head() if fzenhan then { print "-code-:-+0-+1-+2-+3-+4-+5-+6-+7-+8-+9-+A-+B-+C-+D-+E-+F-" } else { print "-code-:-0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-" } endfunc func print_skip() print " : " endfunc func str hex4$(h;int) return (right$("0000"+hex$(h),4)) endfunc func str hex2$(h;int) return (right$("00"+hex$(h),2)) endfunc func printChr(h;int,l;int) print chr$((h shl 16)or l); endfunc func int print_code(st;int,ed;int) /* 全角文字表示 int i,li,hi int j for i=st to ed hi=i / 256 li=i mod 256 if li=0 then { print_head() int ky int ts=time() int dt=0,t repeat ky=inkey() t=time() if t-ts>dt then { :/* 秒が変った dt=dt+1 locate(40,0):print dt beep2(0) } until ky<>0 if ky=&h1b then return (YES) cls() if isLocalizeJapan() then { print "全角文字" } else { print "Double-Width character" } print_head() } if li<&h40 then continue:/* 下位8ビットが<$40の文字はない /* アドレス表示 print " ";hex4$(i);" :"; for j=0 to 16-1 print " "; int c=(i+j) and &hff if c<&h40 or c=&h7f or c>=&hfd then { /* 未定義文字 if fzenhan then { print "**"; } else { print "*"; } } else { c=sjisToUtf8(i+j) print chr$(c); /* 途中で桁上がりを起こさないことを前提にした処理 } next print i=i+16-1:/* 次のnext +1されるから next return (NO) endfunc func print_code0(fzenhan;int) /* 半角文字表示 int li int j,c print_head() for li=&h20 to &he0-1 /* 途中表示しないエリア if li=&h80 then print_skip() if li>=&h80 and li<=&h9f then continue /* アドレス表示 print " ";hex2$(li);" :"; /* 文字表示 for j=0 to 16-1 print " "; c=li+j if c=&h7f or c=&ha0 then c='*' else c=sjisToUtf8(c) print chr$(c); if fzenhan then print " ";:/* 全角=半角*2のフォントの時は後ろにスペースを入れる next print li=li+16-1:/* 次のnext +1されるから next endfunc
Zipファイル :XBetc.zip
0 件のコメント:
コメントを投稿