http,javascript的编码解码

请求与响应的编码应分开分析
两者的编码,解码处理是相对独立的流程
依赖于相对独立的header: request header, response header

ajax相关
http的请求分三部分
header iso-8859-1
uri  utf-8编码(待实验)
body utf-8编码(待实验)

响应
header  iso-8859-1
body  由服务器指定编码方式
响应的数据由浏览器根据返回的头部的编码方式解码
解码后传递给 javascript处理
最好在响应头部指定具体的编码方式

eg

  1. </pre><p><pre name="code" class="html"><!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="GBK">
  5. <script src="jquery.js"></script>
  6. <script src="app.js"></script>
  7. </head>
  8. <body>
  9. <div>
  10. </div>
  11. </body>
  12. </html>

app.js
访问 b.jsp butf8.jsp均正常显示中文

  1. $(function(){
  2. $.ajax({
  3. "url": "b.jsp", // "url": "butf8.jsp",
  4. "type": "get",
  5. "dataType": "json",
  6. "success": function(data){
  7. alert(data["yy"]);
  8. $("div").text(data["yy"]);
  9. }
  10. });
  11. });

b.jsp
保存为gbk文件

  1. <%@ page contentType="text/json;charset=gbk" %>
  2. <%
  3. out.println("{\"中文\":\"xx6\",\"yy\":\"英文6\"}");
  4. %>

butf8.jsp
保存为utf8文件

    1. <%@ page contentType="text/json;charset=utf-8" %>
    2. <%
    3. out.println("{\"中文\":\"xx5\",\"yy\":\"英文5\"}");

%>

======================================

app.js

  1. $(function(){
  2. $("#ss").on("click", function(){
  3. var p = $("p").text();
  4. alert(p);
  5. var pp = {"a": p+p, "b":"1"};
  6. alert(JSON.stringify(pp));
  7. $.ajax({
  8. "url": "b.jsp",
  9. "contentType":"text/json",
  10. "data": JSON.stringify(pp),
  11. //"data":pp,
  12. "type": "post",
  13. "dataType": "json",
  14. "success": function(data){
  15. //alert(data["yy"]);
  16. $("div").text(data["yy"]);
  17. $("p").text(data["yy"]);
  18. }
  19. });
  20. });
  21. });

b.jsp

  1. <%@ page import="java.io.InputStream" %>
  2. <%@ page contentType="text/json;charset=gbk" %>
  3. <%
  4. out.println("{\"中文\":\"xx6\",\"yy\":\"英文6\"}");
  5. %>
  6. <%
  7. byte[] bytes = new byte[1024 * 1024];
  8. InputStream is = request.getInputStream();
  9. int nRead = 1;
  10. int nTotalRead = 0;
  11. while (nRead > 0) {
  12. nRead = is.read(bytes, nTotalRead, bytes.length - nTotalRead);
  13. if (nRead > 0)
  14. nTotalRead = nTotalRead + nRead;
  15. }
  16. String str = new String(bytes, 0, nTotalRead, "gbk");
  17. System.out.println("Str:" + str);
  18. %>

原文为 "英文6英文6"

输出为 Str:{"a":"鑻辨枃6鑻辨枃6","b":"1"}

  1. String str = new String(bytes, 0, nTotalRead, "utf-8");

输出为 Str:{"a":"英文6英文6","b":"1"}

说明: javascript提交时("contentType":"text/json",),("contentType":"application/json"), 直接把 英文6英文6 编码为 utf-8 字节流

post观察的内容为:  {"a":"鑻辨枃6鑻辨枃6","b":"1"}

按gbk解码为 "鑻辨枃6鑻辨枃6"   , 按utf-8解码为   英文6英文6

********************

post缺省提交时
a=%E8%8B%B1%E6%96%876%E8%8B%B1%E6%96%876&b=1

utf-8 uriencode

http,javascript的编码解码的更多相关文章

  1. JavaScript - Base64 编码解码

    以下代码摘自:http://cryptojs.altervista.org/encoding/Base64.html function base64_encode(str) { if (window. ...

  2. 详解JavaScript中的Url编码/解码,表单提交中网址编码

    本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数escape / unescape ...

  3. Javascript与C#编码解码

    (一) Javascript与C#编码解码的对应关系 http://www.jb51.net/article/44062.htm 这篇文章主要是对JS与C#编码解码进行了详细的介绍,需要的朋友可以过来 ...

  4. Javascript Base64编码与解码

    原文:[转]Javascript Base64编码与解码 <html> <head> <META HTTP-EQUIV="MSThemeCompatible&q ...

  5. 第一百零八节,JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式

    JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式 学习要点: 1.Global对象 2.Math对象 ECMA-262对内置对象的定义是:"由ECMASc ...

  6. JavaScript字符集编码与解码

    一.字符集 1)字符与字节(Character) 字符是各种文字和符号的总称,包括乱码:一个字符对应1~n个字节,一字节对应8位,每位用0或1表示. 2)字符集(Character Set) 字符集是 ...

  7. Javascript中Base64编码解码的使用实例

    Javascript为我们提供了一个简单的方法来实现字符串的Base64编码和解码,分别是window.btoa()函数和window.atob()函数. 1 var encodedStr = win ...

  8. PHP和javascript中url编码解码详解

    在实际开发中,我们可能会遇到路径编码解码的问题,下面总结了一下: PHP中: 1.urlencode(编码),urldecode(解码) $a = urlencode('http://www.baid ...

  9. JavaScript中的编码解码

    1.URI 统一资源标识符(URI)是一个用于标识某一互联网资源名称的字符串.,该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作.Web上可用的每种资源 -HTML文档.图像 ...

随机推荐

  1. workflow中的‘非典型’自动触发器trigger_model

    Openerp中workflow的设计机制 工作流程系统在OpenERP里是非常有用的机制,可以用于即时描述单据(模型)状态的演进过程.工作流实现了状态流转的可配置,通过迁移的 condition代替 ...

  2. Swift教程_swift常见问题(0005)_完美解决Cannot override &#39;dealloc&#39;异常

    Swift教程_swift常见问题(0001)_CoreData: warning: Unable to load class named 'xxx' for entity 'xxx' Swift教程 ...

  3. imp与impdp比较

    impdp和expdp是oracle 10g及以上版本才带的命令,目的是替换imp和exp命令,但为了向后兼容,故后面命令在高版本中依然可以使用. 但imp和exp在处理跨版本的导入导出时很麻烦,而i ...

  4. Java中entity(实体类)的写法规范

    在日常的Java项目开发中,entity(实体类)是必不可少的,它们一般都有很多的属性,并有相应的setter和getter方法.entity(实体类)的作用一般是和数据表做映射.所以快速写出规范的e ...

  5. HDUOJ --2544最短路(基础)

    输入包括多组数据.每组数据第一行是两个整数N.M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几 ...

  6. 【C++】static小结

    1.局部静态变量 (1)生存期:存储在静态数据区,本模块运行结束不会销毁,程序结束时才销毁. (2)初始化:当且仅当本模块初次运行时初始化. 2.外部静态变量/静态函数 限制全局变量的作用域为本文件. ...

  7. OOAD和UML

    ooad: object oriented analysis designer 又有两个分支: ooa(object oriented analysis):what to do ood(object  ...

  8. Google map API V3

    本文主要总结Google map API V3使用中最简单也是最常见的一些操作以及相关概念,如果需要更加详细的信息,请直接阅读Google提供的关于map的文档. google map api v3文 ...

  9. 【js】js中的||和&&

    逻辑与&&和逻辑或||操作符可以应用于任何类型的操作数,而不仅仅是布尔值. 几乎所有语言中||和&&都遵循“短路”原理, 如&&中第一个表达式为假就不会 ...

  10. WCF与WPF

    1. WCF(Windows Communication Foundation )是一个统一的,可用于建立安全,可靠的面向服务的应用高效的开发平台.WCF是构建安全可靠的事务性服务的统一框架.它是一种 ...