10 Haziran 2014 Salı

MVC Title ve Meta description Türkçe Karakter Sorununun çözümünün çeşitleri :)

Yaşasınn uzun süre sonra bloguma yazasımı getirecek birşey oldu. :) Çok büyük birşey değil ama bana unuttuğum "o hissi" yaşattı.

Nopcommerce diye ücretsiz bir e-ticaret paketi üzerinde oyalanıyorum şu sıra. Program MVC kullanılarak yazılmış ve gayet kapsamlı. Neyse bunu kullanırken elbette mono laneti peşimi bırakmadı, pek pek çok gıcık sorunla karşılaştım, çözüme bir şekilde ulaştım. Çoğunu not ettim, kimisi de aklımda. Bunu da yayınlayayım bari.

(Burada bir karikatür vardı ama telif yerim diye kaldırdım. Herkese dava açıyorlarmış karikatür paylaşılıyor diye. Karikatürün doğasına hiç uymuyor bence bu tavır :-/ Bir şey olacağı yok ama insan yontuyor işte)

....

Asıl sorun ve çözüme geçmeden bu e-ticaret mevzusunun kodlamayla hiç alakasının olmadığını kaydetmek isterim. SEO dan anlamam, detayları sevmem. Programı çalışır hale getirip yayınladıktan sonra bir hevesim kaçtı ki sormayın. Neyse ki abim varmış, bana SEO konusunda yardım etti (yardımdan çok el koydu demek daha doğru .p ) ve motivasyon sağladı. :) Teşekkür ederim canım abim.

Sıkıntım başlıktan da anlaşılacağı üzere sayfa kaynağını görüntüle dediğimizde sayfa Title ının ve Descriptionlarında türkçe karakterlerin bozuk çıkması. Pek çok çözüm yolu denedim.

Mesela;
  • <title>sayfamın başlığı</title> 'nı
<title>@Html.Raw(sayfamın başlığı)</title>

şeklinde güncelledim başlığı, ancak işe yaramadı.


  • Ardından sayfamın head kısmına
    <meta http-equiv=Content-type content=text/html; charset=UTF-8 />
    <meta http-equiv=Content-type content=text/html; charset=windows-1254 />
    <meta http-equiv=Content-type content=text/html; charset=iso-8859-9 />

taglarını ekledim. Herkeslerde olmuş ama bende olur mu hiç,, yine olmadı :)

  • Sonra web.config'ime system.web 'in altına 
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="tr-TR" uiCulture="tr-TR" />

ekledim. Bu da yaygın bir çözümmüş ama yine olmadı. Hiç olur mu bende Allah aşkına güldürmeyin beni :)


  • Daha birçok burada yayınlamak istemeyeceğim saçma denemem oldu, araştırdım çokca. Sonunda hadi bunu da deneyeyim bakayım diye web.config 'e 
<httpRuntime encoderType="System.Web.Security.AntiXss.AntiXssEncoder,
                             System.Web, Version=4.0.0.0, Culture=neutral,
                             PublicKeyToken=b03f5f7f11d50a3a"/> 

ayarını nakşettim. Ümitsiz bir şekilde sayfa kaynağını görüntüle dediğimde ise sorunumun çözüldüğünü mutluluk içinde gördüm.

Çözümü şurada buldum;
http://stackoverflow.com/questions/14580876/disable-encoding-of-unicode-characters-in-asp-net-mvc3

En çok şu linkte çözüm için ümitlendim;
http://www.bayramucuncu.com/asp-net-mvc-meta-description-turkce-karakter-sorunu/

İnşallah başka şeyler de olur bloguma yazasımı getiren.
---------------------------------------

Önemli Not: Ben bu türkçe karakter sorunu diye tanımladığım şeyin SEO için olumsuz olacağını düşündüğümden düzeltmeye çalışmıştım. Meğer alakası yokmuş. :) Sonuç olarak o kadar emeğim boşa gitti :D Mono lanetiiiii....
Eğer siz de bu yüzden düzeltmek istiyorsanız şu linke göz atın;

http://social.msdn.microsoft.com/Forums/tr-TR/7b0c0a2d-8386-412d-b258-c2b68edd7132/aspnet-mvc-projemde-trke-karakter-sorunu?forum=aspnettr

Kolay gelsin :)