Asp.net Cookie Türkçe karakter sorunu

alattin (17127) 11 yıl önce sordu

Asp.net ile cookie, çerez oluşturduğunuzda, cookie içerisinde Türkçe karakter veya Unicode karakter saklıyorsanız, cookie içerisindeki verilere eriştiğinizde Türkçe karakterlerde bozulma olduğunu fark edeceksiniz.

Örneğin  aşağıdaki gibi bir kodda;

HttpCookie cookie = new HttpCookie("KurabiyeAd");
  cookie.Expires = DateTime.Now.AddMonths(24);
  cookie.Values.Add("Ad", "Alattin Çakır");
  Response.Cookies.Add(cookie);

gibi Ad bilgisini okumak istediğinizde "Alattin Çakır" bozuk olarak görüntülenecektir. 
Bu sorunu çözmek için aşağıdaki işlemleri yapmalısınız.

Toplam 1 cevap


alattin (17127) 11 yıl önce cevapladı

Asp.Net'te Türkçe karakter sorunsuz cookie oluşturmak için birden fazla yöntem var. UrlEncode -UrlDecode yöntemlerinden faydalanabilirsiniz veya web.config üzerinden bunu ayarlayabilirsiniz.

Asp.net cookie Türkçe karakter sorunu çözüm 1:  web.config üzerinden

web.config üzerinde şu değişikliği yaparak karakter kodlaması ile ilgili satırları ekleyin.

Aşağıdaki satırı <system.web> ve  </system.web> arasına eklemelisiniz.

<globalization uiCulture="tr" culture="tr-TR" fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"  responseHeaderEncoding="windows-1254"/>

Asp.net cookie Türkçe karakter sorunu çözüm 2:  UrlEncode-UrlDecode yöntemleri ile

Aşağıdaki çözümde hem asp.net ile cookie oluşturma, asp.net ile cookie okuma örneklerini bulacaksınız. Aynı zamanda cookie üzerinde oluşabilecek Türkçe karakter sorunları için de çözüm olacaktır.

private void CookieOlustur()
{
  HttpCookie cookie = new HttpCookie("KurabiyeAd");
  cookie.Expires = DateTime.Now.AddMonths(24);
  cookie.Values.Add("Ad", Server.UrlEncode("Alattin Çakır"));
  Response.Cookies.Add(cookie);
}

Asp.net'te oluşturulan cookie'deki değeri okumak için;

private void CookieOku()
{
  HttpCookie cookie = Request.Cookies["KurabiyeAd"];
  if (cookie != null)
  {
    txtName.Text = Server.UrlDecode(cookie.Values["Ad"]);
  }
}

Asp.net'te Server.UrlDecode metodu Türkçe karakter ile ilgili yaşanan soruna çözüm olacaktır.

Ayrıca Asp.Net'te UrlEncode ve HtmlEncode arasındaki fark nedir? ilginizi çekebilir.