HTML varlıkları ne zaman kullanılmalıdır?


115

Bu bir süredir kafamı karıştırıyor. UTF-8'in web geliştirmede fiili standart olarak ortaya çıkmasıyla birlikte, hangi durumlarda HTML varlıklarını kullanmam gerektiğini ve hangileri için UTF-8 karakterini kullanmam gerektiğinden emin değilim. Örneğin,

  • uzun tire (-, &emdash;)
  • ve işareti (&, &)
  • 3/4 kesir (¾, ¾)

Lütfen bu konuya ışık tutunuz. Takdir edilecektir.


Bir yan not olarak, PHP'de htmlentities () ne yapacak?
Joe Phillips

Cevapları ve yorumları okurken bana öyle geliyor ki, birinin lehine evrensel bir kural yok ve cevap yine de buna bağlı .
Majid Fouladpour

Yanıtlar:


76

Düzenleyiciniz Unicode'u destekliyorsa, genellikle HTML karakter varlıklarını kullanmanız gerekmez. Varlıklar şu durumlarda yararlı olabilir:

  • Klavyeniz yazmanız gereken karakteri desteklemiyor. Örneğin, birçok klavyede uzun çizgi veya telif hakkı simgesi bulunmaz.
  • Düzenleyiciniz Unicode'u desteklemiyor (birkaç yıl önce çok yaygındı, ancak muhtemelen bugün değil).
  • Neler olduğunu kaynakta açıklığa kavuşturmak istiyorsunuz. Örneğin,  kod, karşılık gelen beyaz boşluk karakterinden daha nettir.
  • HTML özel karakterler gibi kaçmak gerekir <, &ya da ".

1
Çok yararlı. Teşekkürler. Alışılmadık karakterler elde etmek için yardımcı bir program kullanıyorum. Popchar olarak adlandırılır ve Ergonis tarafından yapılır, ancak yalnızca OS X için yapılır.
allesklar

3
Yan not: Wikipedia &nbsp;, kısmen Firefox'un U + 00A0'ı formlarda U + 0020'ye dönüştürmesinden dolayı gerçek boşluk karakteri yerine hala zorunludur. Dolayısıyla, varlığı bu durumda kullanmak, bir Firefox kullanıcısı onu her düzenlediğinde kaynağın karışmamasını sağlamanın tek yoludur.
Joey

2
Güzel bir özet, ancak son noktayla ilgili olarak, <genellikle kaçmaya ihtiyaç duyar, asla >(ve "nadiren öznitelik değerleri içinde kaçmaya ihtiyaç duyar).
Jukka K. Korpela

& Nbsp; bir HTML sayfasında birden çok boşluk görüntüleyebilmeniz içindir.
zylstra

Yani &amp;her zaman yerine kullanılmalı &mı? Bunun bir sebebi var mı?
Prometheus

116

Aldığım yorumlara dayanarak bunu biraz daha araştırdım. Görünüşe göre şu anda en iyi uygulama HTML varlıklarını kullanmaktan vazgeçmek ve bunun yerine gerçek UTF-8 karakterini kullanmak . Listelenen nedenler aşağıdaki gibidir:

  1. Karakterin ne anlama geldiğini anlayan ve nasıl yazılacağını bilenler için UTF-8 kodlamalarını okumak ve düzenlemek daha kolaydır.
  2. UTF-8 kodlamaları, onları anlamayanlar için HTML varlık kodlamaları kadar anlaşılmazdır, ancak ondalık veya onaltılık kodlamaları anlamaktan çok özel karakterler olarak oluşturma avantajına sahiptirler.

Sayfanızın kodlaması doğru şekilde UTF-8'e ayarlandığı sürece, bir HTML varlığı yerine gerçek karakteri kullanmalısınız. Bu konuyla ilgili birkaç belge okudum, ancak en yardımcıları şunlardı:

Gönderen Karakter Kodlama Secret: UTF-8 maddesinde:

Wikipedia, başlangıçta ISO-8859-1'i kullanan ancak yabancı dilleri desteklemek için çok hantal hale geldiğinde UTF-8'e geçen bir uygulama için harika bir örnek olaydır. Botlar artık makaleleri gözden geçirecek ve kullanıcı kolaylığı ve aranabilirlik uğruna karakter varlıklarını karşılık gelen gerçek karakterlere dönüştürecek .

Bu makale ayrıca Çince kodlamayla ilgili güzel bir örnek veriyor. İşte tembellik uğruna kısaltılmış örnek:

UTF-8:

這兩個字是甚麼意思

HTML Varlıkları :

&#36889;&#20841;&#20491;&#23383;&#26159;&#29978;&#40636;&#24847;&#24605;

UTF-8 ve HTML varlık kodlamaları benim için anlamsız, ancak en azından UTF-8 kodlaması yabancı dil olarak tanınabilir ve bir düzenleme kutusunda düzgün şekilde işlenecektir. Makale, HTML varlık kodlamalı sürüm hakkında şunları söylemeye devam ediyor:

Hangi karakter varlıklarının gerçekten ne olduğunu bilenler için son derece rahatsız edici, bilmeyen fakir kullanıcılar için tamamen anlaşılmaz! & Theta; gibi biraz daha kullanıcı dostu, "anlaşılır" karakter varlıkları bile; HTML öğrenmekle ilgilenmeyen kullanıcıları kafalarını kaşıyarak bırakacaktır. Öte yandan, bir düzenleme kutusunda θ görürlerse, bunun özel bir karakter olduğunu bilirler ve bu karakteri kendileri nasıl yazacaklarını bilmeseler bile ona göre davranırlar.

Diğerlerinin de belirttiği gibi, ayrılmış XML karakterleri (ve işareti, küçüktür, büyüktür) için HTML varlıkları kullanmanız gerekir.


Bu cevap çok yardımcı oluyor. Ancak açıklığa kavuşturmak için, kendi anlayışıma göre: &entity;UTF-8 karakter kümesinin beyan edildiği bir HTML belgesinde sözdizimi kullanmanın riskli veya geçersiz hiçbir yanı yoktur , değil mi? Sıraladığınız nedenlerden ötürü düz UTF-8 karakterleri daha iyi olsa da, aynı belgede yanlarında bazı HTML varlıklarının olması sorun değil mi?
Jacob Ford

@JacobFord Doğru, HTML varlıklarını UTF-8 karakterleriyle karıştırmak riskli veya geçersiz değildir, sadece kaynağı okuyan biri için potansiyel olarak kafa karıştırıcı olabilir.
William Brendel

5

Görsel olarak kolayca karıştırılan karakterler için UTF-8 kullanmam. Örneğin, bir emdash'i bir eksi veya özellikle bölünmeyen bir boşluğu bir boşluktan ayırmak zordur. Bu karakterler için kesinlikle varlıklar kullanın.

Görsel olarak kolayca anlaşılan karakterler için (yukarıdaki Çince örnekler gibi), devam edin ve isterseniz UTF-8 kullanın.


5

Şahsen ben her şeyi utf-8'de uzun zamandır yapıyorum, ancak, bir html sayfasında, her zaman ve işaretlerini (&), (>) 'den büyük ve ondan küçük (<) karakterleri eşdeğer varlıklarına & amp; ve gt; ve & lt;

Ayrıca, utf-8 metnini kullanarak biraz programlama yapmayı düşünüyorsanız, dikkat etmeniz gereken birkaç şey var.

  • Varlıkları kullanırken XML'in doğrulanması için bazı ekstra satırlara ihtiyaç vardır.
  • Bazı kütüphaneler utf-8 ile uyumlu değildir. Örneğin, bazı Linux dağıtımlarındaki PHP, normal ifade kitaplıklarında utf-8 için tam desteği bıraktı.
  • Html varlıkları kullanan bir metindeki karakter sayısını sınırlamak daha zordur çünkü tek bir varlık birçok karakter kullanır. Ayrıca varlığı ikiye bölme riski her zaman vardır.

Bu çok küçük bir nokta, ancak (>) 'dan büyük kodlamaya gerek yok, sadece (<)' den küçük.
Codemonkey

4

Varlıklar size kodlamaları doğru anlamayan beyin ölümü gerçekleşmiş istemcilerle uyumluluk satın alabilir. Bunun mevcut tarayıcıları içerdiğine inanmıyorum, ancak başka hangi tür programların size saldırabileceğini asla bilemezsiniz.

Yine de daha kullanışlı olan, HTML varlıklarının sizi kendi hatalarınızdan korumasıdır: Sunucuda bir şeyi yanlış yapılandırırsanız ve sonunda bu olduğunu belirten bir HTTP üstbilgisi ISO-8859-1ve en azından sizin & mdash; leriniz METAolduğunu belirten bir etiket içeren bir sayfa UTF-8sunarsanız her zaman çalışacak.


5
Ters argümanı da yapabilirsiniz - &mdashbaşlıklar yanlış yapılandırılmış olsa bile doğru şekilde görünmesi, bir sorun olduğunu tespit etmeyi zorlaştırır .
Pekka

4

HTML varlıkları, (birkaç) farklı kodlamaya sahip sayfalara dahil edilecek (dinamik olarak) içerik oluşturmak istediğinizde kullanışlıdır. Örneğin, hem ISO-8859-1 hem de UTF-8 kodlu web sayfalarına dahil edilen beyaz etiket içeriğimiz var ...

UTF-8'den / UTF-8'e karakter kümesi dönüşümü o kadar güvenilmez bir karmaşa değilse (her zaman bazı karakterlere ve düzgün dönüştürülmeyen bazı araçlara takılırsınız), UTF-8'i standartlaştırmanın yolu olurdu.


2

Sayfalarınız utf-8'de doğru şekilde kodlandıysa, html varlıklarına ihtiyacınız olmamalıdır, sadece istediğiniz karakterleri doğrudan kullanın.


3
Ayrılmış karakterleri kodlamak için hala onlara ihtiyacınız olacağını düşünüyorum.
rmeador

@rmeador - Buna katılıyorum.
Otávio Décio

2

Önceki cevapların tümü bana mantıklı geliyor.

Ek olarak: Çoğunlukla kullanmayı düşündüğünüz düzenleyiciye ve belge diline bağlıdır. Editör için asgari şart, belge dilini desteklemesidir. Bu, metniniz Japonca ise, onları göstermeyen bir düzenleyici kullanmaktan kaçının (yani, belgenin kendisi için hiçbir varlık yok) anlamına gelir. İngilizce ise, eski bir vim benzeri düzenleyici bile kullanabilir ve varlıkları yalnızca göreceli olarak nadiren kullanabilirsiniz & copy; ve arkadaşlar. Elbette: & gt; for> ve diğer özel HTML dosyalarının hala kaçışlara ihtiyacı var. Ama diğer latin-1 dillerinde (almanca, fransızca vb.) Bile ä yazmak bir acıdır nerede biliyorsunuz ...

Ek olarak, şahsen görünmez karakterler ve standart ascii'ye benzeyen ve bu nedenle kolayca karıştırılan karakterler için varlıklar yazıyorum. Örneğin, dikey çubuk gibi görünen u1173 (bazı karakter kümelerinde tire gibi görünen) veya u1175 var. Her durumda onlar için varlıkları kullanırdım.


ve gt; > için gerekli DEĞİLDİR, sadece> kullanabilirsiniz. ve lt; Yine de <için IS gereklidir.
Codemonkey
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.