http,javascript的编码解码

原创 2016年06月01日 09:07:04
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
</pre><p><pre name="code" class="html"><!doctype html>
<html>
<head>
    <meta charset="GBK">
    <script src="jquery.js"></script>
    <script src="app.js"></script>
</head>
<body>
    <div>
    </div>
</body>
</html>

app.js
访问 b.jsp butf8.jsp均正常显示中文
$(function(){
    $.ajax({
        "url": "b.jsp", // "url": "butf8.jsp",
        "type": "get",
        "dataType": "json",
        "success": function(data){
            alert(data["yy"]);
            $("div").text(data["yy"]);
        }
        
    });
});



b.jsp
保存为gbk文件
<%@ page contentType="text/json;charset=gbk" %>

<%
    out.println("{\"中文\":\"xx6\",\"yy\":\"英文6\"}");
%>


butf8.jsp
保存为utf8文件
<%@ page contentType="text/json;charset=utf-8" %>

<%
    out.println("{\"中文\":\"xx5\",\"yy\":\"英文5\"}");
%>

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

app.js

$(function(){
    $("#ss").on("click", function(){
        var p = $("p").text();
        alert(p);
        var pp = {"a": p+p, "b":"1"};
        alert(JSON.stringify(pp));
        
        $.ajax({
        "url": "b.jsp",
        "contentType":"text/json",
        "data": JSON.stringify(pp),
        //"data":pp,
        "type": "post",
        "dataType": "json",
        "success": function(data){
            //alert(data["yy"]);
            $("div").text(data["yy"]);
            $("p").text(data["yy"]);
            }
        });
        
    });
});
b.jsp

<%@ page import="java.io.InputStream" %>
<%@ page contentType="text/json;charset=gbk" %>

<%
    out.println("{\"中文\":\"xx6\",\"yy\":\"英文6\"}");
%>

<%
        byte[] bytes = new byte[1024 * 1024];  
                InputStream is = request.getInputStream();  
      
                int nRead = 1;  
                int nTotalRead = 0;  
                while (nRead > 0) {  
                    nRead = is.read(bytes, nTotalRead, bytes.length - nTotalRead);  
                    if (nRead > 0)  
                        nTotalRead = nTotalRead + nRead;  
                }  
                String str = new String(bytes, 0, nTotalRead, "gbk");  
                System.out.println("Str:" + str);  
%>

原文为 "英文6英文6"

输出为 Str:{"a":"鑻辨枃6鑻辨枃6","b":"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



Js实现中文编码与解码功能

在网页的url中,我们经常会遇到明显的中文,这样的传输会遇到很多问题,我们使用escape进行对其中的中文进行编码 代码如下所示 中文编码 function init() { con...
  • suwu150
  • suwu150
  • 2016年11月05日 11:46
  • 1765

说说http协议中的编码和解码

http://www.csdn123.com/html/itweb/20130730/29422_29378_29408.htm **********************************...
  • zhao1949
  • zhao1949
  • 2016年05月31日 10:34
  • 535

http--body编码的方式

HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。常见的四种编码方式如下: 1、application/x-www-for...
  • evsqiezi
  • evsqiezi
  • 2017年04月28日 16:52
  • 715

js unicode 编码解码

js unicode 编码解码
  • LOW584710047
  • LOW584710047
  • 2015年06月26日 17:13
  • 1777

URL编码与解码原理

通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。   例如,Url参数字符串中使用...
  • zmx729618
  • zmx729618
  • 2016年05月12日 10:01
  • 13301

第十天3月3日之cookie和session的补充,session中的URL重新技术,base64编码和解码,MD5算法

1.用户禁用cookie后的技术即URL重写 package com.itheima.session.app1; import java.io.IOException; import java.i...
  • tangliuqing
  • tangliuqing
  • 2014年03月03日 23:26
  • 979

JS对URL字符串进行编码/解码分析

一、为什么要进行js编码和解码?   只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*'(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。 ...
  • lishimin1012
  • lishimin1012
  • 2016年10月15日 15:42
  • 5194

js对字符串进行编码方法总结

在用javascript对URL字符串进行编码中,虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤。但后两者是...
  • jumtre
  • jumtre
  • 2016年05月13日 11:12
  • 1920

url编解码与base64编解码

最近做手Q的邀请功能,遇到一个坑,手Q结构化消息分享功能接口如下: /**  * @param scene 标识发送手Q会话或者Qzone  *         eQQScene.QQScene_QZ...
  • linxinfa
  • linxinfa
  • 2016年08月11日 23:40
  • 2580

ffmpeg实时编码解码部分代码

程序分为编码端和解码端,两端通过tcp  socket通信,编码端一边编码一边将编码后的数据发送给解码端,解码端一边接收数据一边将解码得到的帧显示出来。 代码中的编码端编码的是实时屏幕截图。代码...
  • wishfly
  • wishfly
  • 2016年03月29日 10:14
  • 732
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:http,javascript的编码解码
举报原因:
原因补充:

(最多只允许输入30个字)