SJISからEUCコードに変換、文字コード関係で遊ぶ

と言っても、JISのコードの頭を0x80でビットを立ててるだけなのですが。
三流君(TOP) /ASPで遊ぶ /ASP記事一覧を見る

分類: [Form関係] /DB系ADOを使い( [Mdb接続] [CSV接続] [Excel接続]) /[ASPでTextFileを操作] /[VBScript関数ほか]

自作したSJIS--EUC変換ルーチンを呼んでます。
※詳細は、ソースと詳細解説のページを見てください。


調査したい文字列を入力してください。

↑いろいろと遊んでみてください↑


コーヒーブレイク たまには寄り道、休憩も(↓広告です):
広告:[2009年度カレンダー] ← 人気のカレンダーを紹介
[カレンダー商品一覧] ← そろそろ来年の準備

ASPサンプルソース(プログラムのソースコード)

詳細解説は[http:/asp/backno/asp107.html]を見てください
下記、/cgi-bin/test/test107-1.aspのソース(中身)です

EUC を 使った ソースコードを紹介する

表示色の説明:ASP VBScriptは <% 〜 %>
キーワードはEUC です。 <%@LANGUAGE=VBScript%> <html> <head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <title>SJISからEUCに変換、文字コード関係で遊ぶ</title> </head> <body> <h2>SJISからEUCコードに変換、文字コード関係で遊ぶ</h2> と言っても、JISのコードの頭を0x80でビットを立ててるだけなのですが。<br> <br> 自作したSJIS--EUC変換ルーチンを呼んでます。<br> ※詳細は、ソースと詳細解説のページを見てください。<br> <hr> <% CHK_DATA = Request.QueryString("DATA") 'パラメータの代入 '長さをチェックする If Len(CHK_DATA) <> 0 Then '文字が入っていたら Response.Write "受け取ったデータは[" Response.Write Server.HTMLEncode(CHK_DATA) & "]です<br>" '関数を呼んで、バイト数を表示する Response.Write "バイト数は、" & Byte_Count(CHK_DATA) & "Byteです<br>" '文字数分ループして、コードを表示 For n = 1 To Len(CHK_DATA) Response.Write n & "文字目は" strWORK = Mid(CHK_DATA, n, 1) 'n番目の文字を取り出す Response.Write "[" & Server.HTMLEncode(strWORK) & "] " strCODE = Hex(Asc(strWORK)) If Len(strCODE) <= 2 Then '半角か? Response.Write " 半角はそのまま16進数にする " & strCODE Else Response.Write " さらにHexで16進(SJIS)は" & strCODE Response.Write " JISは" & SJIStoJIS(strCODE) Response.Write " EUC" & SJIStoEUC(strCODE) End If Response.Write "<BR>" & vbCRLF Next 'ヤフーオークションのリンクを作ってみる。 p="" 'パラメータ文字列の初期化。 For n = 1 To Len(CHK_DATA) strWORK = Mid(CHK_DATA, n, 1) 'n番目の文字を取り出す strCODE = Hex(Asc(strWORK)) If Len(strCODE) <= 2 Then '半角か? If strWORK = " " Then '半角スペースは+に変換する p = p & "+" 'ほかにも特殊文字があるんだけど手抜き Else p = p & strWORK '半角はそのまま追加する ヤフオクの場合 End If Else sEUC = SJIStoEUC(strCODE) 'EUCコードに変換する。 '%付きの文字列 %XX%XX を作成する。 p = p & "%" & Mid(sEUC,1,2) & "%" & Mid(sEUC,3,2) End If Next ' A リンクを表示する。 sURL = "http://search.auctions.yahoo.co.jp/jp/search/auc?" sURL = sURL & "p=" & p '変数pを追加 sURL = sURL & "&auccat=0&alocale=0jp&acc=jp" '追加パラメータ Response.Write "<a Href='" & sURL & "' target='_blank'>" Response.Write Server.HTMLEncode(CHK_DATA) & "</a>← ヤフオクに飛ぶ<br>" Response.Write "↑キーワードリンク リンクのコードは↓<br>" Response.Write Server.HTMLEncode(sURL) & "<br>" End If %> <HR> <FORM ACTION="test107-1.asp" METHOD="GET"> 調査したい文字列を入力してください。<br> <INPUT TYPE="text" SIZE="30" NAME="DATA" VALUE="<%=CHK_DATA%>"> <INPUT TYPE="submit" VALUE="コード調査開始"><br> ↑いろいろと遊んでみてください↑ </FORM> <br> </body> </html> <% 'SJISコードの文字列を受け取り、EUCコードの文字列を返す Function SJIStoEUC(strSJISCODE) Dim hi Dim lo 'シフトJISコードの上位バイトを hi、下位バイトを lo とします。 hi = Clng("&h" & Mid(strSJISCODE, 1, 2)) lo = Clng("&h" & Mid(strSJISCODE, 3, 2)) If hi <= &H9F Then hi = hi - &H71 'hi が 0x9f 以下の場合、 hi から 0x71 減じます。 Else hi = hi - &HB1 'そうでない場合、 hi から 0xB1 減じます。 End If 'hi に 2 を乗じて、さらに 1 を加えます。 hi = hi * 2 + 1 'lo が 0x7F より大きい場合、 lo から 1 減じます。 If lo > &H7F Then lo = lo - 1 'lo が 0x9E 以上の場合、lo から 0x7D 減じて、hi に 1 加えます。 If lo >= &H9E Then lo = lo - &H7D hi = hi + 1 Else 'そうでない場合、 lo から 0x1F 減じます。 lo = lo - &H1F End If 'JISの hi と lo ができたので、0x80 を or して 最上位のビットを立てます。 hi = hi or &h80 lo = lo or &h80 '結果を返します SJIStoEUC = Right("0" & Hex(hi), 2) & Right("0" & Hex(lo), 2) End Function 'SJISコードの文字列を受け取り、JISコードの文字列を返す Function SJIStoJIS(strSJISCODE) Dim hi Dim lo 'シフトJISコードの上位バイトを hi、下位バイトを lo とします。 hi = Clng("&h" & Mid(strSJISCODE, 1, 2)) lo = Clng("&h" & Mid(strSJISCODE, 3, 2)) If hi <= &H9F Then hi = hi - &H71 'hi が 0x9f 以下の場合、 hi から 0x71 減じます。 Else hi = hi - &HB1 'そうでない場合、 hi から 0xB1 減じます。 End If 'hi に 2 を乗じて、さらに 1 を加えます。 hi = hi * 2 + 1 'lo が 0x7F より大きい場合、 lo から 1 減じます。 If lo > &H7F Then lo = lo - 1 'lo が 0x9E 以上の場合、lo から 0x7D 減じて、hi に 1 加えます。 If lo >= &H9E Then lo = lo - &H7D hi = hi + 1 Else 'そうでない場合、 lo から 0x1F 減じます。 lo = lo - &H1F End If '結果を返します SJIStoJIS = Right("0" & Hex(hi), 2) & Right("0" & Hex(lo), 2) End Function '文字列を受け取り、バイト数を返す Function Byte_Count(strMOJI) bcnt = 0 '文字数分ループして、コードを表示 For n = 1 To Len(strMOJI) nCODE = Asc(Mid(strMOJI, n, 1)) 'n番目の文字コードを求める If (nCODE And &HFF00) = 0 Then 'コードは1バイトか? *asp055 bcnt = bcnt + 1 Else bcnt = bcnt + 2 End If Next 'リターン値をセットする Byte_Count = bcnt End Function %>

商品:時計関係を紹介(広告)

時計 →の人気

  1. [カシオ]CASIO 腕時計 G-SHOCK ジーショック Garish 5月15日 最近販売
  2. [シチズン キューアンドキュー]CITIZEN Q&Q 腕時計 Day& 5月15日 伸び率UP
  3. [アドミラル]ADMIRAL 腕時計 ADMIRAL ADM2012IT 5月14日 最近販売
  4. TENDENCE テンデンス Hydrogen ハイドロゲン スカル 腕 5月14日 伸び率UP
  5. CASIO[カシオ]正規品 G-SHOCK タフソーラー用 純正二次電池 5月13日 最近販売
  6. [ロシェ]ROCHET 腕時計 MOTOR SPORT IGNITION 5月13日 伸び率UP
  7. [セイコー]SEIKO 腕時計 SPIRIT SMART スピリット ス 5月12日 最近販売
  8. [タグ・ホイヤー]TAG HEUER フォーミュラー1 腕時計 WAH1 5月12日 伸び率UP

続き(一覧)を見る



SQL総合の書籍を紹介します

  1. [4798114774]- これならわかるSQL 入門の入門
  2. [4873112818]- 初めてのSQL
  3. [4797344989]- 明快入門SQL [林晴比古実用マスターシリーズ]
  4. [4797345667]- 即戦力が身につく SQLトレーニング
  5. [4774126179]- これだけはおさえたい データベース基礎の基礎 -設計と運用の基本からSQLの書き方まで-
  6. [4781910246]- リレーショナルデータベース入門―データモデル・SQL・管理システム (Information&Computing)


Googleで関連項目を検索する

[キーワード:EUC] と Sub|Function で検索する。
↓で検索するとプログラムの例 Sub/Function でまとまったHP

Google

あれ?私のページが検索に載ってない(笑)一度お試しを(私のページに、また戻ってきてね(爆))


[Topへ戻る] −−>[ASP系へ戻る] −−>[バックナンバーを見る]

三流解説とリンクページを紹介

ASP系の解説を項目ごとにまとめてみました

まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。

その他:blogや広告↓
[日記的なblog]← あまり更新してないけど・・・
[三流なプログラムコード]← 恥ずかしいのであまり載せてないけど・・・
[通販商品の足跡を紹介] ←通販商品などを紹介してます




現在時刻は、2012/05/18 9:33:33です。