@Charset “UTF-8” neden belirtilmelidir; dosyasında?


173

Bu talimatı bana çevrilmiş çok sayıda CSS dosyasının ilk satırı olarak görüyorum:

@charset "UTF-8";

Ne işe yarıyor ve bu kural gereği gerekli mi?

Ayrıca, bu meta etiketi "head" öğeme dahil edersem, bu da CSS dosyalarımda bulunma ihtiyacını ortadan kaldırır mı?

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

Yanıtlar:


123

Tarayıcıya css dosyasını UTF-8 olarak okumasını söyler. CSS'niz yalnızca ASCII değil, unicode karakterler içeriyorsa bu kullanışlıdır.

Meta etikette kullanmak iyidir, ancak yalnızca bu meta etiketi içeren sayfalar için.

CSS 2 için w3c spesifikasyonunda CSS dosyalarının karakter kümesi çözünürlüğü için kuralları okuyun .


7
Bu dosyaları UTF-8 dışındaki sitelerden bağlamanız da önemlidir, örneğin: CDSS'den CSS yüklemeye çalışan UTF-16 olarak kodlanmış bir Japon web sitesi, CSS dosyası bildirmezse okunamaz içerik alacak kodlayan.
Parasetamol

147

Bu, kodlama HTTP üstbilgisi veya diğer meta veriler, örneğin yerel dosya sistemi başına söylenmeyen bağlamlarda kullanışlıdır.

Aşağıdaki stil sayfasını düşünün:

[rel="external"]::after
{
    content: ' ↗';
}

Bir okuyucu dosyayı bir sabit sürücüye kaydederse ve @charsetkuralı atlarsanız , çoğu tarayıcı bunu OS'nin yerel kodlamasında, örneğin Windows-1252'de okur ve ok yerine â † - ekler.

Ne yazık ki, destek oldukça nadir olduğu için bu mekanizmaya güvenemezsiniz. Ve internette bir HTTP üstbilgisinin her zaman @charsetkuralı geçersiz kılacağını unutmayın .

Stil sayfasının karakter kümesini belirlemek için doğru kurallar öncelik sırasına göre verilmiştir:

  1. HTTP Karakter Kümesi başlığı.
  2. Bayt Sırası İşareti.
  3. İlk @charsetkural.
  4. UTF-8.

Son kural en zayıf olanıdır, bazı tarayıcılarda başarısız olacaktır . Öznitelik içinde kullanılmıyor HTML 5 . Farklı beyanlar arasındaki çatışmaya dikkat edin. Hata ayıklamak kolay değildir.
charset<link rel='stylesheet' charset='utf-8'>

Önerilen Kaynaklar


Yani css dosyalarının content-type:text/css;charset=utf-8başlık ile sunulması gerekiyor mu?
Pacerier

1
@Pacerier Evet, HTML dosyasının kodlaması buysa (olması gerekir).
fuxia

Demek istediğim, bir karakter kümesi olmadan, css dosyasının karakter kümesinin gömme HTML dosyasınınkiyle aynı şekilde yorumlanması gerektiği anlamına gelmiyor mu?
Pacerier

1
@Pacerier Bunun her zaman böyle olmadığını gözlemledim.
MatTheCat

3

Metin içeren her sayfaya her zaman bir karakter kümesi belirtimi eklemenin bir nedeni, siteler arası komut dosyası oluşturma güvenlik açıklarından kaçınmaktır. Çoğu durumda UTF-8 karakter kümesi, HTML sayfaları da dahil olmak üzere metin için en iyi seçimdir.


2

Css dosyalarınıza bir <meta> etiketi koyuyorsanız, yanlış bir şey yapıyorsunuz demektir. <meta> etiketi html dosyalarınıza aittir ve tarayıcıya html'nin nasıl kodlandığını söyler, ayrı bir dosya olan css hakkında hiçbir şey söylemez. Html ve css için tamamen farklı kodlamalara sahip olabilirsiniz, ancak bunun iyi bir fikir olacağını hayal edemiyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.