人老了,以前研究過的東西都忘記了。所以還是記錄下來比較好。
廢話不說,[url=翠花[/url],上**:
如果你總是使用utf-8編碼,則基本不用為編碼問題傷腦筋。但是總有些時候,事情超出了你的掌控範圍。
通常表單提交時將按照文件本身的編碼進行編碼。如果是乙個gb2312的文件,如何按照utf-8編碼提交呢?此外是否可以通知伺服器,請求是按照何種方式編碼的呢?
以上**測試了瀏覽器為此類問題所提供的各種特性。可將上述**儲存為不同的編碼,如utf-8、gb2312、big5等(可以加上meta httpequiv=content-type content=text/html;charset=[i]***[/i]),然後進行測試(即修改document.charset和form.acceptcharset然後提交,觀察url引數的結果)。
以下是一些瀏覽器的測試結果(僅測試了get請求):
支援document.charset 支援form.acceptcharset 支援_charset_
ie6 y n* y
ff2 n y y
safari3 y y n
chrome1 y y n
opera9 n* y y
由於手頭安裝的瀏覽器有限,有興趣的同志可幫忙測試一下ie5、ie7、ie8、ff3以及其他瀏覽器。
說明:1. document.charset
可獲得文件的字元編碼。
也可改寫,從而影響到表單提交時所採用的編碼。在ie中改變charset還會影響網頁的字型。
ie專有屬性,webkit引擎也實現了該屬性。ff2不支援,雖然有乙個document.characterset屬性,但是唯讀。opera9雖然可通過charset屬性讀取字元編碼,但是改寫該屬性似無意義。
2. form.acceptcharset
按照html4規範,form上的accept-charset屬性(dom中為acceptcharset)表示伺服器可接受的編碼列表(以空格或逗號分割多種編碼)。瀏覽器應選取其中一種ascii相容的編碼(具體選擇哪種,各瀏覽器自行決定——比如chrome雖然也用webkit引擎,但是在選擇編碼方面似乎與safari有一些不同)作為表單資料的編碼。
ie6雖然有acceptcharset屬性,但是無效果。(然而據一封古老的微軟工程師在unicode組織郵件列表裡的郵件表明,ie5也許支援?有興趣同志可以測試一下。)
3. _charset_
當表單包含乙個name為_charset_的hidden型別input,表單提交時,_charset_的value會被設為表單資料的字元編碼。
ie5開始支援此特性。ff團隊follow了此特性([url]
上述3個特性皆納入了[url=規範草案[/url]。
JSON編碼格式提交表單資料
以json編碼格式提交表單資料是html5對web發展進化的又一大貢獻,以前我們的html表單資料是通過key value方式傳輸的伺服器端,這種形式的傳輸對資料組織缺乏管理,形式十分原始。而新出現的json格式提交表單資料方法,將表單裡的所有資料轉化的具有一定規範的json格式,然後傳輸的伺服器端...
Json JSON編碼格式提交表單資料詳解
via 以json編碼格式提交表單資料是html5對web發展進化的又一大貢獻,以前我們的html表單資料是通過key value方式傳輸的伺服器端,這種形式的傳輸對資料組織缺乏管理,形式十分原始。而新出現的json格式提交表單資料方法,將表單裡的所有資料轉化的具有一定規範的json格式,然後傳輸的...
form表單資料提交遇到跨域時
1 乙個網域名稱 上的form表單將資料提交到另乙個網域名稱 上去 利用ajax進行非同步請求資料 如果是php後台接收資料,這個時候會遇到跨域的問題 在php頁面的header頭加上下面這個允許所有的網域名稱訪問,當然也可以寫指定的網域名稱 header access control allow ...