ある案件で、IIS+ASP+BASP21という構成で、文字コードをUTF-8に変換してからURLエンコードをする、ということが必要になった。
BASP21を使って、下記のように書いても正しくエンコードされないとのこと。
というわけで、下記のような関数を作ってみた。
一応、動作してるっぽいので、よしとする。
別のやり方としては、こんなのもあるらしい。
「UTF-8の変換処理(エンコード)に挑戦してみた」
BASP21を使って、下記のように書いても正しくエンコードされないとのこと。
strUrl = objBsp.Kconv("日本語の文字列", 5, 1) strUtfUrl = objBsp.Base64(strUrl, 4) |
というわけで、下記のような関数を作ってみた。
<% ' 文字列をUTF-8にエンコードした後、URLエンコードする ' ' Utf8UrlEncode(strTarget) ' 入力: ' strTarget : VBS文字列 ' ' 出力:文字コードUTF-8でURLエンコードされた文字列 ' ' 使用モジュール:BASP21を使用。 ' Function Utf8UrlEncode(strTarget) Dim objBasp Dim strUtf8 Dim i, len, h, c Dim strEncoded ' 空のときは抜ける If IsNull(strTarget) Or IsEmpty(strTarget) Or Trim(strTarget) = "" Then Exit Function End If ' UTF-8 に変換。結果はバイト文字列 Set objBasp = Server.CreateObject("basp21") strUtf8 = objBasp.Kconv(strTarget, 5) ' 1バイトずつ取り出しながら、16進数へ変換しエンコード len = UBound(strUtf8) + 1 strEncoded = "" For i = 1 To len h = Hex(AscB(MidB(strUTF8, i, 1))) strEncoded = strEncoded & "%" & h Next Utf8UrlEncode = strEncoded End Function '/* end of Utf8UrlEncode(strTarget) */ %> |
一応、動作してるっぽいので、よしとする。
別のやり方としては、こんなのもあるらしい。
「UTF-8の変換処理(エンコード)に挑戦してみた」