Asp.net mvc meta description türkçe karakter sorunu

11 Tem

Asp.net mvc ile geliştirdiğim uygulamalarda seo konusuna geldiğimde karşılaştığım bir sorunu da meta etiketlerinin açıklamalarının dinamik olarak oluşturmaya çalıştığımda karşıma çıkar karakter sorunuydu. Bu sorunu, HTML encoding yüzünden yaşadığımı düşünüyorum.

<!DOCTYPE html>
<html lang="tr">
<head>

<title>@ViewBag.Title</title>

<meta name="description" content="@(MvcHtmlString.Create(ViewBag.Description))"/>

Normalde meta description içerisinde “sürü” yazmalıydı ama yazmıyor işte.

Bu sorunu düzeltmek için meta description kısmında küçük bir değişiklik yaparak şu şekle getirdiğimde sorun ortadan kalkıyor.

<meta name="description" content="@(Html.Raw(ViewBag.Description))"/>


ve sonuç aşağıdaki gibidir.
<meta name="description" content="sürü" />

Aslında burada karşılaştığımız sorun razor view engine tarafından alınmış bir güvenlik önlemi. Yani bir kullanıcı, sayfamınız yorum kısmına sürekli alert veren bir javascript kodu yazdığında, bu yorum Html tarafında direk render edilirse, sayfa her açıldığında kullanıcıların karşısına alert veren bir pencere çıkacaktır.

Bu tarz javascript ataklarını önleyebilmek için, helper sınıfları ve metodları kullanılır genelde. Örneğin yukarda kullanılan Html.Raw metodu yardımı ile bu içeriğin ne olduğunu bildiğimizi belirtiyor ve html olarak render edilmesini istiyoruz.

Aslında kıllanabileceğimiz bir kaç tane yöntem  var. Şu şeklide sıralayabiliz.

1- <meta name="description" content="@(ViewBag.Description)"/>
2- <meta name="description" content="@(MvcHtmlString.Create(ViewBag.Description))"/>
3- <meta name="description" content="@(new MvcHtmlString(ViewBag.Description))"/>

Bu yöntemlerin hepsinin temelinde yatan IHtmlString arayüzünün ToHtmlString() metodudur.

Tekrar görüşmek ümidiyle.

Silverlight Invalid Charecter Encoding Sorunu

25 Nis

Silverlight ortamında bazı proje şablonlarını kullanırken dile özgü karakterlerin kullanılması sonucu hatalarla karşılaşabilmekteyiz. Bu hatalardan biri de benim başıma geldi. Esri Silverlight API kullanırken hazır şablonlardan birini seçip edit etmeye başladığımda design sayfasında bir hata oluştu. Hatanın sebebi Türkçe karakterler kullanmam idi. Oluşan hata şu şekildeydi.

Error  1   Cannot resolve reference assemblies. Please check the reference assemblies. Invalid character in the given encoding. Line 116, position 53.  

Proje template oluşturulurken muhtemelen global ayarlar seçilsin şeklinde ayarlanmış olmalı ki ayarlarda Türkçe encoding seçiliydi.

Bu ayarı UTF-8 yapmalıydım. Bu işlem için aşağıdaki yolu izledim. File -> Advenced Save Options…

Encoding seçeneklerinden de Unicode(UTF-8 with signature) – Codepage-65001 seçeneğini seçip OK tuşuyla devam ettim.

Ardından projeyi bir kez derlediğimde sorun ortadan kalktı. İşte mutlu son.

Tekrar görüşmek dileğiyle.