Kapan sebaiknya seseorang menggunakan entitas HTML?

115

Ini telah membingungkan saya selama beberapa waktu. Dengan munculnya UTF-8 sebagai standar de-facto dalam pengembangan web, saya tidak yakin dalam situasi apa saya seharusnya menggunakan entitas HTML dan untuk situasi apa saya harus menggunakan karakter UTF-8. Sebagai contoh,

  • em tanda hubung (-, &emdash;)
  • ampersand (&, &)
  • Pecahan 3/4 (¾, ¾)

Tolong jelaskan masalah ini. Itu akan dihargai.

allesklar.dll
sumber
Di samping catatan, apa yang akan dilakukan htmlentities () di PHP?
Joe Phillips
Membaca jawaban dan komentar menurut saya belum ada aturan universal yang berpihak pada satu atau yang lain, dan jawabannya tetap tergantung .
Majid Fouladpour

Jawaban:

76

Anda biasanya tidak perlu menggunakan entitas karakter HTML jika editor Anda mendukung Unicode. Entitas dapat berguna jika:

  • Keyboard Anda tidak mendukung karakter yang perlu Anda ketik. Misalnya, banyak papan ketik yang tidak memiliki tanda pisah em atau simbol hak cipta.
  • Editor Anda tidak mendukung Unicode (sangat umum beberapa tahun yang lalu, tetapi mungkin tidak hari ini).
  • Anda ingin menjelaskan apa yang terjadi di sumbernya. Misalnya,  kode lebih jelas daripada karakter spasi kosong yang sesuai.
  • Anda perlu untuk melarikan diri HTML karakter khusus seperti <, &, atau ".
JacquesB
sumber
1
Sangat membantu. Terima kasih. Saya menggunakan program yang bermanfaat untuk mendapatkan karakter yang tidak biasa. Ini disebut popchar dan dibuat oleh Ergonis tetapi hanya untuk OS X.
allesklar
3
Catatan tambahan: Wikipedia masih mengamanatkan &nbsp;alih-alih karakter spasi kosong, sebagian karena Firefox mengubah U + 00A0 menjadi U + 0020 dalam bentuk. Jadi, menggunakan entitas dalam kasus tersebut adalah satu-satunya cara untuk memastikan bahwa sumber tidak menjadi kacau setiap kali pengguna Firefox mengeditnya.
Joey
2
Sebuah ringkasan yang bagus, tetapi mengenai poin terakhir, itu <yang sering perlu keluar, tidak pernah >(dan "jarang perlu melarikan diri di dalam nilai atribut).
Jukka K. Korpela
Alasan lain untuk mempertahankan & nbsp; adalah agar Anda dapat menampilkan banyak spasi pada halaman HTML.
zylstra
Jadi &amp;harus selalu digunakan sebagai pengganti &? Apakah ada alasan untuk ini?
Prometheus
116

Berdasarkan komentar yang saya terima, saya memeriksanya lebih jauh. Tampaknya saat ini praktik terbaik adalah melupakan penggunaan entitas HTML dan sebagai gantinya menggunakan karakter UTF-8 yang sebenarnya . Alasan yang tercantum adalah sebagai berikut:

  1. Pengodean UTF-8 lebih mudah dibaca dan diedit bagi mereka yang memahami arti karakter dan mengetahui cara mengetiknya.
  2. Pengodean UTF-8 sama sulitnya dengan pengodean entitas HTML bagi mereka yang tidak memahaminya, tetapi mereka memiliki keuntungan dalam merender sebagai karakter khusus daripada sulit untuk memahami pengodean desimal atau heksadesimal.

Selama encoding halaman Anda disetel dengan benar ke UTF-8, Anda harus menggunakan karakter sebenarnya, bukan entitas HTML. Saya membaca beberapa dokumen tentang topik ini, tetapi yang paling berguna adalah:

Dari artikel UTF-8: Rahasia Pengkodean Karakter :

Wikipedia adalah studi kasus yang bagus untuk aplikasi yang awalnya menggunakan ISO-8859-1 tetapi beralih ke UTF-8 ketika menjadi terlalu rumit untuk mendukung bahasa asing. Bot sekarang benar-benar akan melalui artikel dan mengubah entitas karakter menjadi karakter nyata yang sesuai demi keramahan pengguna dan kemudahan pencarian .

Artikel itu juga memberikan contoh bagus yang melibatkan pengkodean bahasa Mandarin. Berikut adalah contoh singkatnya demi kemalasan:

UTF-8:

這兩個字是甚麼意思

Entitas HTML :

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

Encoding entitas UTF-8 dan HTML sama-sama tidak berarti bagi saya, tetapi setidaknya encoding UTF-8 dapat dikenali sebagai bahasa asing , dan akan ditampilkan dengan benar di kotak edit. Artikel selanjutnya menjelaskan hal berikut tentang versi yang dikodekan entitas HTML:

Sangat merepotkan bagi kita yang benar-benar tahu apa itu entitas karakter, sama sekali tidak dapat dipahami oleh pengguna miskin yang tidak tahu! Bahkan entitas karakter yang sedikit lebih ramah pengguna dan "dapat dipahami" seperti & theta; akan membuat pengguna yang tidak tertarik mempelajari HTML menggaruk-garuk kepala. Di sisi lain, jika mereka melihat θ di kotak edit, mereka akan tahu bahwa itu adalah karakter khusus, dan memperlakukannya sesuai, bahkan jika mereka tidak tahu cara menulis karakter itu sendiri.

Seperti yang telah dicatat orang lain, Anda masih harus menggunakan entitas HTML untuk karakter XML yang dicadangkan (ampersand, less-than, more-than).

William Brendel
sumber
Jawaban ini sangat membantu. Tetapi untuk memperjelas, untuk pemahaman saya sendiri: tidak ada yang berisiko atau tidak valid tentang penggunaan &entity;sintaks dalam dokumen HTML dengan charset UTF-8 yang dinyatakan, benar? Meskipun karakter UTF-8 biasa lebih baik untuk alasan yang Anda cantumkan, tidak ada masalah masih memiliki beberapa entitas HTML di sampingnya dalam dokumen yang sama?
Jacob Ford
@JacobFord Benar, mencampurkan entitas HTML dengan karakter UTF-8 tidak berisiko atau tidak valid, hanya berpotensi membingungkan seseorang yang membaca sumbernya.
William Brendel
5

Saya tidak akan menggunakan UTF-8 untuk karakter yang secara visual mudah membingungkan. Misalnya, sulit untuk membedakan emdash dari minus, atau terutama spasi tidak putus dari spasi. Untuk karakter ini, pasti menggunakan entitas.

Untuk karakter yang mudah dipahami secara visual (seperti contoh bahasa China di atas), lanjutkan dan gunakan UTF-8 jika Anda mau.

Ned Batchelder
sumber
5

Secara pribadi saya melakukan semuanya di utf-8 sejak lama, namun, di halaman html, Anda selalu perlu mengonversi karakter ampersand (&), lebih besar dari (>) dan lebih kecil dari (<) ke entitas yang setara, & amp ;, & gt; dan & lt;

Selain itu, jika Anda berniat melakukan pemrograman menggunakan teks utf-8, ada beberapa hal yang harus diperhatikan.

  • XML membutuhkan beberapa baris tambahan untuk divalidasi saat menggunakan entitas.
  • Beberapa perpustakaan tidak bekerja dengan baik dengan utf-8. Misalnya, PHP di beberapa distribusi Linux menghentikan dukungan penuh untuk utf-8 di pustaka ekspresi regulernya.
  • Lebih sulit untuk membatasi jumlah karakter dalam teks yang menggunakan entitas html, karena satu entitas menggunakan banyak karakter. Juga selalu ada risiko memotong entitas menjadi dua.
Marco Luglio
sumber
Ini adalah poin yang sangat kecil, tetapi tidak ada persyaratan untuk menyandikan lebih besar dari (>), hanya kurang dari (<).
Codemonkey
4

Entitas dapat membelikan Anda beberapa kompatibilitas dengan klien mati otak yang tidak memahami pengkodean dengan benar. Saya tidak percaya itu termasuk browser saat ini, tetapi Anda tidak pernah tahu jenis program lain apa yang mungkin menarik bagi Anda.

Namun, yang lebih berguna adalah entitas HTML melindungi Anda dari kesalahan Anda sendiri: jika Anda salah mengonfigurasi sesuatu di server dan Anda akhirnya menyajikan laman dengan tajuk HTTP yang mengatakan itu ISO-8859-1dan METAtag yang mengatakan itu UTF-8, setidaknya & mdash; es Anda akan selalu berhasil.

Jim Puls
sumber
5
Anda dapat membuat argumen sebaliknya - &mdashmuncul dengan benar meskipun header salah konfigurasi akan mempersulit pendeteksian masalah.
Pekka
4

Entitas HTML berguna ketika Anda ingin menghasilkan konten yang akan disertakan (secara dinamis) ke dalam halaman dengan (beberapa) pengkodean yang berbeda. Misalnya, kami memiliki konten label putih yang disertakan ke dalam halaman web berenkode ISO-8859-1 dan UTF-8 ...

Jika konversi kumpulan karakter dari / ke UTF-8 bukanlah kekacauan besar yang tidak dapat diandalkan (Anda selalu tersandung pada beberapa karakter dan beberapa alat yang tidak dapat diubah dengan benar), standarisasi pada UTF-8 akan menjadi cara yang tepat.

mjy
sumber
2

Jika halaman Anda dikodekan dengan benar di utf-8, Anda seharusnya tidak memerlukan entitas html, cukup gunakan karakter yang Anda inginkan secara langsung.

Otávio Décio
sumber
3
Saya pikir Anda masih membutuhkannya untuk menyandikan karakter yang dicadangkan.
rmeador
@rmeador - Saya setuju dengan itu.
Otávio Décio
2

Semua jawaban sebelumnya masuk akal bagi saya.

Selain itu: Ini sebagian besar tergantung pada editor yang ingin Anda gunakan dan bahasa dokumen. Sebagai persyaratan minimum untuk editor adalah ia mendukung bahasa dokumen. Artinya, jika teks Anda dalam bahasa Jepang, berhati-hatilah dalam menggunakan editor yang tidak menampilkannya (tidak ada entitas untuk dokumen itu sendiri). Jika itu bahasa Inggris, Anda bahkan dapat menggunakan editor mirip-vim lama dan menggunakan entitas hanya untuk yang relatif jarang & copy; dan teman-teman. Tentu saja: & gt; for> dan HTML khusus lainnya masih membutuhkan pelarian. Tetapi bahkan dengan bahasa latin-1 lainnya (Jerman, Prancis, dll.) Menulis ä adalah menyebalkan Anda tahu di mana ...

Selain itu, saya pribadi menulis entitas untuk karakter yang tidak terlihat dan yang terlihat mirip dengan standar-ascii dan oleh karena itu mudah bingung. Misalnya, ada u1173 (tampak seperti tanda hubung di beberapa rangkaian karakter) atau u1175, yang terlihat seperti bilah vertikal. Bagaimanapun, saya akan menggunakan entitas untuk itu.

blabla999
sumber
& gt; TIDAK diperlukan untuk>, Anda bisa menggunakan>. & lt; IS dibutuhkan untuk <, meskipun.
Codemonkey