ASP:全角・半角を考慮した文字数(バイト数)取得例:Len、LenB
ASP・VB・Excel (24 items)
2004年08月24日
ASPでは、全角(2バイト文字)・半角の区別が出来ない為、
Len・LenB関数を使用しても期待した結果が返ってこない。
半角を1バイト、全角を2バイトとして、
文字のバイト数を取得する関数の一例を以下に記す。
※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”
(実行結果)
<関連記事>
ASPでの全角と半角の扱い
<参考記事>
[XL97]Unicode と 文字列操作関数の留意点
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 と 文字列操作関数の留意点
<スポンサードリンク>
前の記事 次の記事