Bất kỳ ký tự nào bạn có thể đưa vào tệp HTML [X] đều có thể đưa vào <input name>. Như nhận xét của Allain nói, <input name>được định nghĩa là chứaCDATA , vì vậy những thứ duy nhất bạn không thể đưa vào đó là mã điều khiển và điểm mã không hợp lệ mà tiêu chuẩn cơ bản (SGML hoặc XML) không cho phép.
Allain đã trích dẫn W3 từ thông số kỹ thuật HTML4:
Ghi chú. Phương thức "get" hạn chế các giá trị tập dữ liệu biểu mẫu thành các ký tự ASCII. Chỉ phương thức "post" (với enctype = "multiart / form-data") được chỉ định để bao gồm toàn bộ bộ ký tự ISO10646.
Tuy nhiên, điều này không thực sự đúng trong thực tế.
Lý thuyết là application/x-www-form-urlencodeddữ liệu không có cơ chế để chỉ định mã hóa cho tên hoặc giá trị của biểu mẫu, vì vậy việc sử dụng các ký tự không phải ASCII trong một trong hai ký tự "không được chỉ định" là hoạt động và bạn nên sử dụng POSTedmultipart/form-data thay thế.
Thật không may, trong thế giới thực, không có trình duyệt nào chỉ định mã hóa cho các trường ngay cả khi về mặt lý thuyết, nó có thể, trong tiêu đề phần phụ của nội dung multipart/form-datayêu cầu POST. (Tôi tin rằng Mozilla đã cố gắng triển khai nó một lần, nhưng đã bị lùi lại do nó làm hỏng máy chủ.)
Và không có trình duyệt nào triển khai tiêu chuẩn RFC2231 phức tạp và xấu xí đáng kinh ngạc cần thiết để chèn các tên trường không phải ASCII được mã hóa vào tiêu đề phần phụ của nhiều phần. Trong mọi trường hợp, thông số HTML xác định multipart/form-datakhông trực tiếp nói rằng RFC2231 nên được sử dụng và một lần nữa, nó sẽ phá vỡ các máy chủ nếu bạn cố gắng.
Vì vậy, thực tế của tình huống là không có cách nào để biết mã hóa nào đang được sử dụng cho các tên và giá trị trong một lần gửi biểu mẫu, bất kể đó là loại biểu mẫu nào. Trình duyệt sẽ làm gì với tên trường và giá trị chứa các ký tự không phải ASCII giống nhau đối với GET và cả hai loại biểu mẫu POST: nó mã hóa chúng bằng cách mã hóa trang chứa biểu mẫu được sử dụng. Các tên biểu mẫu GET không phải ASCII không bị phá vỡ nhiều hơn mọi thứ khác.
DLH:
Vậy tên có kiểu dữ liệu khác với các phần tử khác?
Trên thực tế, phần tử duy nhất có namethuộc tính không phải CDATAlà <meta>. Xem danh sách thuộc tính của thông số kỹ thuật HTML4 để biết tất cả các cách sử dụng khác nhau của name; đó là một tên thuộc tính quá tải, có nhiều ý nghĩa khác nhau trên các phần tử khác nhau. Đây thường được coi là một điều xấu.
Tuy nhiên, thông thường những ngày này bạn sẽ tránh namengoại trừ trên các trường biểu mẫu (nơi đó là tên điều khiển) và param(khi đó là mã nhận dạng tham số cụ thể của plugin). Đó chỉ là hai ý nghĩa để vật lộn với nhau. Nên tránh sử dụng kiểu cũ nameđể xác định các phần tử như <form>hoặc <a>trên trang ( idthay vào đó hãy sử dụng ).
namecó một kiểu dữ liệu<input>khác với các phần tử khác? Hấp dẫn.