<SJIS--JISのコード変換>
こんにちは、三流プログラマーのKen3です。 今回は、 シフトJISからJISコードへ、コード変換を行ってみます。 拾い読みして、何かの参考となれば幸いです。/* * 1.今回のキッカケ */
VBA系のメルマガ( http://www.ken3.org/vba/ ) で、 シフトJISからJISコードへ、コード変換を行ってみたので、 ASP(VBScript)でもやってみます。/* * 2.VBAの自作関数を移植する。 */
VBA系のメルマガ No.79 SJIS--JISコードの文字列を作成したい で、下記の変換関数を作成しました。 ※式、コードの意味などは、 http://www.ken3.org/backno/backno_vba16.html#79 を見てください。 'シフトJISコードの文字列を受け取り、JISコードを返す
Function SJIStoJIS(strSJISCODE As String) As String
Dim hi As Long
Dim lo As Long
'シフトJISコードの上位バイトを hi、下位バイトを lo とします。
hi = Val("&h" & Mid(strSJISCODE, 1, 2))
lo = Val("&h" & Mid(strSJISCODE, 3, 2))
'hi が 0x9f 以下の場合、 hi から 0x71 減じます。
'そうでない場合、 hi から 0xB1 減じます。
hi = hi - IIf(hi <= &H9F, &H71, &HB1)
'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 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 |
| ASPで遊ぶ、失敗する | 掲示板 | バックナンバー | 登録と解除 |
| 三流プログラマー 業務の愚痴 | 掲示板 | バックナンバー | 登録と解除 |
| VBAで楽しくプログラミング | 掲示板 | バックナンバー | 登録と解除 |
| コンビニのオモテとウラ話 | 掲示板 | バックナンバー | 登録と解除 |