Web Artisan Blog - ウェブ アルチザン ブログ

ASP:全角・半角を考慮した文字数(バイト数)取得例:Len、LenB

ASP・VB・Excel (24 items)

2004年08月24日

ASPでは、全角(2バイト文字)・半角の区別が出来ない為、
Len・LenB関数を使用しても期待した結果が返ってこない。

半角を1バイト、全角を2バイトとして、
文字のバイト数を取得する関数の一例を以下に記す。
<スポンサードリンク>

Function funcLenB(p_Str)
On Error Resume Next

 Dim i
 Dim iAscCode
 Dim iCount

 iCount = 0

 If Len(p_Str) = 0 Then
  funcLenB = 0
  Exit Function
 End If
 
 '1文字ずつ処理
 For i = 1 to Len(p_Str)
  iCount = iCount + 1
  '1文字の文字コード取得(Asc関数でシステム既定の文字コード取得)
  iAscCode = Asc(Mid(p_Str, i, 1))
  '※1
  If Len(Hex(iAscCode)) > 2 Then
   iCount = iCount + 1
  End If
 Next

 funcLenB = iCount

End Function



※1・・システム既定の文字コードであれば、半角文字は文字コードの長さが2、全角文字は4(2以上)として判断

○格納形式:Unicodeの場合
文字列”A”・・・格納状態(16進数文字コード)=”4100”
文字列”B”・・・格納状態(16進数文字コード)=”4200”
文字列”あ”・・・格納状態(16進数文字コード)=”4230”
文字列”い”・・・格納状態(16進数文字コード)=”4430”

○格納形式:ANSIの場合
文字列”A”・・・格納状態(16進数文字コード)=”41”
文字列”B”・・・格納状態(16進数文字コード)=”42”
文字列”あ”・・・格納状態(16進数文字コード)=”82A0”
文字列”い”・・・格納状態(16進数文字コード)=”82A2”

(実行結果)

funcLenB("あ")・・・返却値=2
funcLenB("A")・・・返却値=1




<関連記事>
ASPでの全角と半角の扱い

<参考記事>
[XL97]Unicode と 文字列操作関数の留意点

<スポンサードリンク>
前の記事 次の記事

Comments

コメントは、まだ書かれていません

Add Comments

Trackback

トラックバックはありません

Trackback URL

http://www.res-system.com/weblog/action.php?action=plugin&name=TrackBack&tb_id=241