Bir [X] HTML dosyasına ekleyebileceğiniz herhangi bir karakter, bir <input name>
. Allain'in yorumunun dediği gibi, kapsayıcı <input name>
olarak tanımlandığından CDATA
, oraya koyamayacağınız tek şey, temeldeki standardın (SGML veya XML) izin vermediği kontrol kodları ve geçersiz kod noktalarıdır.
Allain, W3'ü HTML4 spesifikasyonundan aktardı:
Not. "Get" yöntemi, form veri kümesi değerlerini ASCII karakterleriyle sınırlar. Tüm ISO10646 karakter kümesini kapsayacak şekilde yalnızca "post" yöntemi (enctype = "multipart / form-data" ile) belirtilir.
Ancak bu pratikte gerçekten doğru değil.
Teori, application/x-www-form-urlencoded
verilerin form adları veya değerleri için bir kodlama belirleme mekanizmasına sahip olmamasıdır, bu nedenle her ikisinde de ASCII olmayan karakterlerin kullanılması "belirtilmemiştir" ve multipart/form-data
bunun yerine POSTed kullanmalısınız.
Ne yazık ki, gerçek dünyada hiçbir tarayıcı, bir multipart/form-data
POST istek gövdesinin alt bölüm başlıklarında teorik olarak yapabilse bile alanlar için bir kodlama belirtmez . (Mozilla'nın bir kez uygulamaya çalıştığına inanıyorum, ancak sunucuları kırdığı için geri adım attı.)
Ve hiçbir tarayıcı, kodlanmış ASCII olmayan alan adlarını çok parçanın alt bölüm başlıklarına eklemek için gerekli olabilecek şaşırtıcı derecede karmaşık ve çirkin RFC2231 standardını uygulamaz . Her durumda, tanımlayan HTML spesifikasyonu multipart/form-data
doğrudan RFC2231'in kullanılması gerektiğini söylemez ve yine denerseniz sunucuları kırabilir.
Yani durumun gerçekliği, hangi formda olursa olsun, bir form sunumundaki isimler ve değerler için hangi kodlamanın kullanıldığını bilmenin bir yolu yoktur. Tarayıcıların ASCII olmayan karakterler içeren alan adları ve değerleriyle yapacakları, GET ve her iki tür POST formu için de aynıdır: kullanılan formu içeren sayfayı kodlayarak bunları kodlar. ASCII olmayan GET form adları her şeyden daha fazla bozuk değildir.
DLH:
Yani ismin diğer elemanlar için olduğundan farklı bir veri türü var mı?
Aslında kimin tek unsur name
niteliktir değil CDATA
ise <meta>
. Tüm farklı kullanımları için HTML4 spesifikasyonunun öznitelik listesine bakın name
; farklı öğeler üzerinde birçok farklı anlama sahip aşırı yüklenmiş bir öznitelik adıdır. Bu genellikle kötü bir şey olarak kabul edilir.
Bununla birlikte, genellikle bu günlerde name
, form alanları (bir kontrol adı olduğu) ve param
(eklentiye özgü bir parametre tanımlayıcısı olduğu) dışında kaçınmanız gerekir . Bu, uğraşılması gereken sadece iki anlamdır. Sayfadaki veya name
gibi unsurları tanımlamak için eski usul kullanımından kaçınılmalıdır ( bunun yerine kullanın).<form>
<a>
id
name
,<input>
diğer öğeler için olduğundan farklı bir veri türü var mı? İlginç.