Saya menggunakan karakter khusus HTML (✰) yang "menyenangkan" (lihat http://html5boilerplate.com/ untuk info lebih lanjut) untuk Server
HTTP-header dan saya bertanya-tanya apakah itu "diizinkan" per spesifikasi.
Menggunakan Tab Jaringan di alat dev di Chrome pada Windows Xp Pro SP 3 Saya melihat ✰ baik-baik saja.
Di IE8, ✰ tidak ditampilkan dengan benar.
Validator HTML w3.org tidak merendernya dengan benar (
â°
malah menampilkan " ").
Sekarang, saya tidak terlalu tertarik pada pengkodean karakter ... dan terus terang saya tidak terlalu peduli tentang mereka; Saya hanya menggunakan UTF-8 secara membabi buta karena saya disuruh. :-)
Apakah perbedaan ini disebabkan oleh bug di parser / browser / mesin / (apa pun namanya) yang berbeda?
Apakah ada spesifikasi untuk ini atau mungkin daftar karakter yang diizinkan untuk "nilai" header HTTP?
sumber
Jawaban:
Singkatnya: Hanya ASCII yang dijamin dapat berfungsi. Beberapa byte non-ASCII diizinkan untuk kompatibilitas mundur, tetapi tidak seharusnya dapat ditampilkan.
HTTPbis menyerah dan menetapkan bahwa di header tidak ada pengkodean yang berguna selain ASCII:
Sebelumnya, RFC 2616 dari 1999 mendefinisikan ini:
dan RFC 2047 adalah pengkodean MIME , jadi ini akan menjadi:
tetapi menurut saya tidak banyak (jika ada) klien yang mendukungnya.
sumber
Silakan baca komentar terlebih dahulu, jawaban ini sepertinya menarik kesimpulan yang salah dari sumber yang benar, perlu diedit.
Anda dapat menggunakan karakter ASCII yang dapat dicetak, dan tidak ada karakter khusus seperti ✰ (Yang bukan ASCII )
Tip : Anda dapat mengenkode apa saja di JSON.
Sunting : mungkin tidak terlihat jelas pada awalnya, pengkodean karakter yang ditentukan di tajuk hanya berlaku untuk isi respons, bukan untuk tajuk itu sendiri. (Karena itu akan menyebabkan masalah ayam - & - telur.)
Saya ingin merangkum semua definisi yang relevan sesuai spesifikasi yang ditautkan oleh Penchant.
Jadi, kami mengejar nilai bidang .
LWS adalah singkatan dari Linear White Space. Pada dasarnya, LWS adalah Spasi atau Tab, tetapi Anda dapat memecah nilai bidang Anda menjadi beberapa baris dengan memulai baris baru sebelum Spasi atau Tab.
Mari kita sederhanakan menjadi ini:
Sekarang kita mengejar konten lapangan .
TEXT adalah yang paling umum dan mencakup yang lainnya -jadi lupakan yang lainnya-. Berikut adalah charset US-ASCII (= ASCII)
Seperti yang Anda lihat, semua karakter ASCII yang dapat dicetak diizinkan.
sumber
OCTET
s, dan BecauseTEXT
adalah salah satuOCTET
kecuali0 - 31
, ini berarti semuaOCTET
s dari32
hingga255
diperbolehkan . Oktet ✰ adalah226
,,156
dan176
ketiganya diperbolehkan, oleh karena itu ✰ diperbolehkan sesuai dengan kutipan yang Anda kutip.CTLs
"? Apakah itu berarti karakterCR
,LF
diperbolehkan? Atau apakah itu berarti hanya urutan kontinu "CR
LF
SP
/HT
" yang diperbolehkan? (Dengan kata lain, dapat sundulan nilai mengandung satuCR
atauLF
atauHT
Can nilai sundulan berisi karakter?CR
,LF
, DanHT
dalam urutan dan jumlah?)