js默认编码方式
今天看了看同事給我的《Java Web程序設計教程》,看到里面說ajax默認的編碼方式是UTF-8,我的多疑性格促使我做了個實驗,把js的編碼都測試了。
1、UTF-8編碼下:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
1.1測試js的編碼函數,alert(encodeURIComponent("中國"));
? 輸出的結果為?%E4%B8%AD%E5%9B%BD,然后我在java代碼里這樣做System.out.println(URLEncoder.encode("中國", "UTF-8"));其結果是%E4%B8%AD%E5%9B%BD,這個驗證了如果html編碼是utf-8的話js的編碼也是utf-8.
1.2測試表單序列化編碼編碼 ? 用jquery的serialize方法,
? ? <form ?id="form">
? ? <input type="text" name="name" value="中國"/>
? ?</form> ?
? ?js中是 ?alert($("#form").serialize());alert出的結果是 ? name=%E4%B8%AD%E5%9B%BD
? 看出也是utf-8編碼。
1.3ajax編碼 ?POST方式
? ?瀏覽器端:
?$.ajax({url:"server.jsp",data:{name:"中國"},type:"POST",success:function(){}});
? ?服務器端:
?String name = request.getParameter("name");
? ? ? System.out.println(Charset.defaultCharset());//平臺默認的編碼,
? ? ? System.out.println(name);
? 控制臺的輸出結果為
UTF-8
中國
可見post方式提交的ajax的確是以UTF-8編碼的。
1.4 ?ajax GET方式
瀏覽器端提交方式改為GET,其余不變,服務器端的代碼如下
?<%
? ? ? String name = request.getParameter("name");
? ? ? System.out.println(new String(name.getBytes("ISO8859-1"),"UTF-8"));
? ?%>
輸出結果是: ?中國,表明仍然是UTF-8編碼的。
===============================================================
從以上看出,在頁面是UTF-8編碼的情況下,js的編碼都是UTF-8的。
==============================================================
然后測試頁面編碼是gbk的,這里直接上結論,因為流程一樣的。
2?<meta http-equiv="Content-Type" content="text/html; charset=GBK">
2.1 JS ??alert(encodeURIComponent("中國")); ?測試結果仍然是UTF-8編碼。
2.2 序列化 ?測試結果為 ?UTF-8編碼
2.3 ajax POST ? ?測試結果為 ?UTF-8
2.4ajax ?GET ? 測試結果為 ?UTF-8(這個和我以前的認識是不一樣的,以前以為會已GBK編碼呢。要改正,我最后做個測試直接在地址欄里寫路徑+“?name=中國”,服務器端代碼不變,
? ? ? String name = request.getParameter("name");
? ? ? System.out.println(new String(name.getBytes("ISO8859-1"),"UTF-8"));
仍然可以打印 ? 中國
===========================================
結論:url編碼和js編碼是統一的,都是按照UTF-8編碼,與頁面編碼無關。
===========================================
轉載于:https://blog.51cto.com/wuguohua/1673316
總結
- 上一篇: 我的Android进阶之旅------g
- 下一篇: Matlab中mat2cell的使用