http,javascript的编码解码
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
http,javascript的编码解码的更多相关文章
- JavaScript - Base64 编码解码
以下代码摘自:http://cryptojs.altervista.org/encoding/Base64.html function base64_encode(str) { if (window. ...
- 详解JavaScript中的Url编码/解码,表单提交中网址编码
本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数escape / unescape ...
- Javascript与C#编码解码
(一) Javascript与C#编码解码的对应关系 http://www.jb51.net/article/44062.htm 这篇文章主要是对JS与C#编码解码进行了详细的介绍,需要的朋友可以过来 ...
- Javascript Base64编码与解码
原文:[转]Javascript Base64编码与解码 <html> <head> <META HTTP-EQUIV="MSThemeCompatible&q ...
- 第一百零八节,JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式
JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式 学习要点: 1.Global对象 2.Math对象 ECMA-262对内置对象的定义是:"由ECMASc ...
- JavaScript字符集编码与解码
一.字符集 1)字符与字节(Character) 字符是各种文字和符号的总称,包括乱码:一个字符对应1~n个字节,一字节对应8位,每位用0或1表示. 2)字符集(Character Set) 字符集是 ...
- Javascript中Base64编码解码的使用实例
Javascript为我们提供了一个简单的方法来实现字符串的Base64编码和解码,分别是window.btoa()函数和window.atob()函数. 1 var encodedStr = win ...
- PHP和javascript中url编码解码详解
在实际开发中,我们可能会遇到路径编码解码的问题,下面总结了一下: PHP中: 1.urlencode(编码),urldecode(解码) $a = urlencode('http://www.baid ...
- JavaScript中的编码解码
1.URI 统一资源标识符(URI)是一个用于标识某一互联网资源名称的字符串.,该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作.Web上可用的每种资源 -HTML文档.图像 ...
随机推荐
- eclipse git提交代码
1.安装git 2.安装好后,进行,一个简单配置,填入我们的用户名和邮箱 >>Preferences>Team>Git>Configuration 设置自定义仓库 3.登 ...
- DB2保存图片并读取动态显示图片
博文背景: 客户要求结构化图片信息,而不是文件文档话的管理,故要求将图片信息存储于DB2里,出于技术的角度,真不喜欢将文件存储于数据库, 但客户是上帝,木有办法,故有了如下的测试. 测试环境:DB2 ...
- win10下Visual Studio 2015,C++ x64编译zlib
前提安装了visual studio 2015 PS.几乎所有方式,x64的编译都会有点坑,鉴于网上的x86编译方式非常的多,所以不再累赘x86的编译方式 zlib下载源: 官网:http: ...
- lua入门之二:c/c++ 调用lua及多个函数返回值的获取
当 Lua 调用 C 函数的时候,使用和 C 调用 Lua 同样类型的栈来交互. C 函数从栈中获取她的參数.调用结束后将返回结果放到栈中.为了区分返回结果和栈中的其它的值,每一个 C 函数还会返回结 ...
- ORACLE—005:创建JOB(一)
JOB在实际应用中.使用非常多.一般用户定时运行某些函数,存储过程等. 以下看看怎样创建并启动JOB. 比如,使用job定时运行某个存储过程. 存储过程名:Pro_Test_JOB 运行间隔:2小时, ...
- [转]linux内核网络分层结构
Preface Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计. Linux内核采用分层结构处理网络数据包.分层结构与网络协议的结构匹配,既能简化数据包处理流程 ...
- HDUOJ----4502吉哥系列故事——临时工计划
吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- Python 的 Matplotlib 画图库
Matplotlib安装 NumPy库方便数值运算,但枯燥的数据并不利于人们的直观理解. 数据需要可视化. Matplotlib:一个数据可视化函数库 使用前需要安装 利用Python自带 ...
- Oracle用同义词可以不使用用户名.表名查询表 Oracle 创建synonym
一般在PL/SQL下,Oracle 用户查询其他用户的表一定要使用user.table格式才能查询,每次用户名.表名嫌麻烦的话.可以使用同义词,意思将user.table访问格式改成table格式即可 ...
- iOS10:CallKit的简单应用
CallKit 这个开发框架,能够让语音或视讯电话的开发者将 UI 界面整合在 iPhone 原生的电话 App 中.将允许开发者将通讯 App 的功能内建在电话 App 的“常用联络资讯”,以及“通 ...