ASP.netでクッキー(cookies)を使う時の注意

ASP.netはクッキーにセッション情報を渡しているが、レガシーASP同様に「Response.Cookies」や「Request.Cookies」の通常のクッキーも使えます。

しかしローカルでビルドし検証した時は異常がないが、IISに上げるとクッキーが文字化けする現象が発生します。


その原因はIIS上でUTF-8として扱われるため送信時との文字コードの違いにより文字化けが発生します。クッキーの書き込みと受信のサンプルを以下に記載。

以下のサンプルはASP.netのテキストボックス「txtUserName」の値をクッキーへの書き込みとクッキーから受信した値を「txtUserName」へ入れる。

▼書き込み
'※変数など書き込む値をServer.UrlEncode() で囲む
Response.Cookies("userName").Value = Server.UrlEncode(txtUserName.Text.Trim())

▼受信
'※変数を作成し、デコードして書き込む。書き込むまえにNothingの判定が必要。
Dim ck_username As String = String.Empty
If Not (Request.Cookies("userName") Is Nothing) Then
ck_username = Trim(Server.UrlDecode(Request.Cookies("userName").Value.ToString))
  If Not ck_username.ToString = String.Empty Then
 txtUserName.Text = ck_username.ToString
End If
End If