[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.052 キャラクタコード、Asc関数を使用して文字コードで遊ぶ

キャラクタコード、Asc関数を使用して文字コードで遊ぶ



本文(発行内容)


<キャラクタコード、Asc関数を使用して文字コードで遊ぶ>

こんにちは、三流プログラマーのKen3です。 今回は、 Asc関数を使って、文字で遊んでみます。 拾い読みして、何かの参考となれば幸いです。

/* * 1.Asc関数で文字コードの表示、蛇足で16進数表示 */

あまり意識したこと無いのですが、 キャラクタコードを表示してみたいと思います。 いつもの適当な動作仕様は、 フォームで文字列を入力、Getで送信。 受け取ったデータをMid関数で一文字単位で取り出し、 Asc関数で文字コードを表示します、 ついでにHex関数で16進数の文字列にしてみます。 なんだか、よくわからん(笑) さてと、仕様にあわせて作るか。 http://www.ken3.org/cgi-bin/test/test052-1.asp?DATA=012ABCxyz で、テストできます。遊んでみてください。 <%@LANGUAGE=VBScript%> <html> <head> <title>Asc関数でキャラクタコードの表示、Hex関数を使用して16進数で表示</title> </head> <body> <h2>Asc関数でキャラクタコードの表示、Hex関数を使用して16進数で表示</h2> <!-- Ken3 --><!-- #include file="info.inc" --> <% CHK_DATA = Request.QueryString("DATA") 'パラメータの代入 '長さをチェックする If Len(CHK_DATA) <> 0 Then '文字が入っていたら Response.Write "受け取ったデータは[" Response.Write Server.HTMLEncode(CHK_DATA) & "]です<br>" '文字数分ループして、コードを表示 For n = 1 To Len(CHK_DATA) Response.Write n & "文字目は" strWORK = Mid(CHK_DATA, n, 1) 'n番目の文字を取り出す Response.Write "[" & Server.HTMLEncode(strWORK) & "] " Response.Write "をAscで変換すると" & Asc(strWORK) Response.Write " さらにHexで16進数にすると" & Hex(Asc(strWORK)) Response.Write "<BR>" & vbCRLF Next End If %> <HR> <FORM ACTION="test052-1.asp" METHOD="GET"> 調査したい文字列を入力してください。<br> <INPUT TYPE="text" SIZE="30" NAME="DATA" VALUE="<%=CHK_DATA%>"> <INPUT TYPE="submit" VALUE="コード調査開始"><br> ↑いろいろと遊んでみてください↑ </FORM> <br> </body> </html> ポイントを整理すると ~~~~~~~~~~~~~~~~~~~~ '文字数分ループして、コードを表示 For n = 1 To Len(CHK_DATA) Response.Write n & "文字目は" strWORK = Mid(CHK_DATA, n, 1) 'n番目の文字を取り出す Response.Write "[" & Server.HTMLEncode(strWORK) & "] " Response.Write "をAscで変換すると" & Asc(strWORK) Response.Write " さらにHexで16進数にすると" & Hex(Asc(strWORK)) Response.Write "<BR>" & vbCRLF Next のループ部分です。 Len関数で文字数が求められるので、 For文で1から文字数までカウンタnを使ってます。 Mid関数を使用して、n番目の文字を取り出します。 あとは、関数の連発で、 Server.HTMLEncode(strWORK) <>%”などの表示不可文字をエンコードして表示 Asc(strWORK) 取り出した文字の文字コードを表示 Hex(Asc(strWORK)) 文字コードをさらに16進数文字列に変換して表示 http://www.ken3.org/cgi-bin/test/test052-1.asp?DATA=012ABCxyz と実行すると 受け取ったデータは[012ABCxyz]です 1文字目は[0] をAscで変換すると48 さらにHexで16進数にすると30 2文字目は[1] をAscで変換すると49 さらにHexで16進数にすると31 3文字目は[2] をAscで変換すると50 さらにHexで16進数にすると32 4文字目は[A] をAscで変換すると65 さらにHexで16進数にすると41 5文字目は[B] をAscで変換すると66 さらにHexで16進数にすると42 6文字目は[C] をAscで変換すると67 さらにHexで16進数にすると43 7文字目は[x] をAscで変換すると120 さらにHexで16進数にすると78 8文字目は[y] をAscで変換すると121 さらにHexで16進数にすると79 9文字目は[z] をAscで変換すると122 さらにHexで16進数にすると7A と変換されて表示されます。 いろいろと文字を入れて、遊んでみてください。

/* * 2.漢字は?どんな感じ(寒いオヤジギャグだった、、、) */

日本人が気になるのは、漢字だよね。 漢字を入力するとどんな感じになるか?と寒いオヤジギャグをかましつつ、 ASP楽しくをテストしました。 http://www.ken3.org/cgi-bin/test/test052-1.asp?DATA=ASP%8Ay%82%B5%82%AD 受け取ったデータは[ASP楽しく]です 1文字目は[A] をAscで変換すると65 さらにHexで16進数にすると41 2文字目は[S] をAscで変換すると83 さらにHexで16進数にすると53 3文字目は[P] をAscで変換すると80 さらにHexで16進数にすると50 4文字目は[楽] をAscで変換すると-30087 さらにHexで16進数にすると8A79 5文字目は[し] をAscで変換すると-32075 さらにHexで16進数にすると82B5 6文字目は[く] をAscで変換すると-32083 さらにHexで16進数にすると82AD こんな感じで結果が表示されました。 LenやMidは漢字混じりでもOKなんだぁ、 漢字のコードは2バイトXXXXなんですね。

/* * 3.あまり必要ないけど、バイト数を数える関数を作成してみる */

私は、今のところ必要ないんだけど、おまけで、 バイト数を数える関数を作成してみるか。 関数の仕様は、文字列を受け取って、リターン値でバイト数を返すか。
Function Byte_Count(strMOJI)
  bcnt = 0
  '文字数分ループして、コードを表示
  For n = 1 To Len(strMOJI)
    nCODE = Asc(Mid(strMOJI, n, 1))  'n番目の文字コードを求める
    If nCODE >= 0 And nCODE <= 255 Then  'コードが1バイト文字内か?
      bcnt = bcnt + 1
    Else
      bcnt = bcnt + 2
    End If
  Next
  'リターン値をセットする
  Byte_Count = bcnt
End Function
http://www.ken3.org/cgi-bin/test/test052-2.asp?DATA=ASP%8Ay%82%B5%82%AD でテストすると、 受け取ったデータは[ASP楽しく]です バイト数は、9Byteです と半角3バイト+全角6バイト(3文字)の計算が無事できました。

/* * 4.終わりの挨拶 </HTML> */

今回は、 Asc関数で文字コードの表示、 Hex関数で16進数に変換、 試しに半角、全角を判断してバイト数を求める関数を作成しました。 ASP、VBScript勉強中の三流プログラマーのKen3でした。


ページフッター

ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、

三流君へ メッセージを送る

感想や質問・要望・苦情など 三流君へメッセージを送る。
返信例 XXXXさんへ
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)

種類別のリンク や 広告など

[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


Blogとリンク:[三流君のMemo別館]/ [ASP 三流君のソースコード置き場]/ [Ken3Video YouTubeで動画解説]
広告:

気になった ジャンル ↓を選択してください。

まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。

次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません

広告:



DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く

VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。



[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


広告: