参考:
https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/#N10263
https://www.cnblogs.com/chenssy/p/4207554.html

场景:
JSP: <%@ page language="java" contentType="text/html; charset=uft-8" pageEncoding="utf-8"%>
发起get请求: window.location.href="/testWebb/testWeb?aa="+'我我我哦王'

1.url中参数在内存中以unicode(char)方式保存
2.发起get请求后,浏览器根据页面charset对url参数进行编码(bytes),例如:我我我哦王
gbk:%CE%D2%CE%D2%CE%D2%C5%B6%CD%F5
utf8:%E6%88%91%E6%88%91%E6%88%91%E5%93%A6%E7%8E%8B(%为url规范增加)
3.服务端request
request根据content-type编码格式进行解码(bytes-char),若未设置content-type则默认使用ISO-8859-1进行解码,得到unicode(char);
ISO-8859-1 字符集的编码范围是 0000-00FF,正好和一个字节的编码范围相对应。这种特性保证了使用 ISO-8859-1 进行编码和解码可以保持编码数值“不变”。即
当中文通过gbk/U8转为bytes后再经过ISO转char,再转bytes,再转char内容不变,即ISO无法从bytes中还原出原gbk或utf8编码格式的char。参见参考链接1

4.服务端response
response根据content-type编码格式进行编码(char-bytes),若未设置content-type则默认使用ISO-8859-1进行编码,得到bytes
5.浏览器根据页面charset对bytes进行解码

注释1,char(unicode)对于所有中文都一样,bytes根据编码格式不同而不同
注释2,new String(request.getParameter("aa").getBytes("ISO-8859-1"),"UTF-8")
1.未设置content-type时,request.getParameter()方法按照ISO方式对Bytes(gbk或utf8)进行解码获得unicode(char),此时bytes与char在内存中存储一致;
2.getBytes()方法根据编码格式将char转成bytes(gbk或utf8);
3.new String 编码格式将bytes转成char;编码格式需要与步骤1中原编码格式一致

char(unicode)->gbk/utf8/iso(encode) 页面->%+16(byte)->request decode (gbk/utf8/iso(默认))->char(unicode)->reponse encode->bytes->浏览器 decode(header)->char(unicode)

Javaweb 编解码流程的更多相关文章

  1. 多媒体文件格式分析 MP3文件结构及编解码流程

    多媒体文件格式分析 http://blog.csdn.net/taniya001/article/details/7962864 多媒体文件格式分析 MP3文件结构及编解码流程 http://www. ...

  2. H264的编解码流程?

  3. 视频编解码学习之路(H264)

    学习视频编解码技术很难吗?视频编解码技术的未来是什么? 明了的说,无论是软件还是硬件设计,视频编解码技术有很多难点,都需要很长一段时间积累才行. 从一开始接触MPEG-2到最新的H.264标准,可算走 ...

  4. FFmpeg编解码处理1-转码全流程简介

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10584901.html FFmpeg编解码处理系列笔记: [0]. FFmpeg时间戳详 ...

  5. iOS8系统H264视频硬件编解码说明

    公司项目原因,接触了一下视频流H264的编解码知识,之前项目使用的是FFMpeg多媒体库,利用CPU做视频的编码和解码,俗称为软编软解.该方法比较通用,但是占用CPU资源,编解码效率不高.一般系统都会 ...

  6. android 音频编解码1

    1. Android 官方的 MediaCodec API 该 API 是在 Andorid 4.1 (API 16) 版本引入的 MediaCodec 使用的基本流程是: 1234567891011 ...

  7. FFMPEG解码流程

    FFMPEG解码流程:  1. 注册所有容器格式和CODEC: av_register_all()  2. 打开文件: av_open_input_file()  3. 从文件中提取流信息: av_f ...

  8. 转:关于视频H264编解码的应用实现

    转:http://blog.csdn.net/scalerzhangjie/article/details/8273410 项目要用到视频编解码,最近半个月都在搞,说实话真是走了很多弯路,浪费了很多时 ...

  9. (转)FFMPEG解码流程

    http://www.douban.com/note/228831821/ FFMPEG解码流程:     1. 注册所有容器格式和CODEC: av_register_all()     2. 打开 ...

随机推荐

  1. Windows+Apache+mod_wsgi+Flask部署方法

    环境:windows7 64bit 1.python版本3.6.5,32位 2.下载Apache,版本httpd-2.4.33-o102o-x86-vc14-r2,32位,vc14编译 3.下载mod ...

  2. DDB---查询与优化

    摘要:分布式数据库(Distributed DB)是数据库中非常重要的一个部分,随着要处理的数据越来越多,分布式逐渐成为了一种策略.主要有:分布式操作系统,分布式程序设计语言,分布式文件系统,分布式数 ...

  3. .net framework , code first

    1. 创建一个控制台应用程序, 并添加引用 2 创建 一个类 public class New { [Key] public string NewId { get; set; } public str ...

  4. 1-蓝桥杯套路-java

    决定参加蓝桥杯用java了,当然得重新刷点题目,熟悉一下,以后要是考研失败了,可能回去找java的工作!!! 经验贴: 1. https://blog.csdn.net/wqy20140101/art ...

  5. asp.net asp.net application 升级到 asp.net web 解决找不到控件 批量生成.designer文件

    颇费周折后,其实很简单,只需要生成designer文件后,重新保存所有页面即可.就是懒得写.懒真的是一种病,手上不能懒,脑子里更不能懒,否则就是给自己挖坑,仔细认真,注意细节!!!! PS:注意修改p ...

  6. angular中文文档的滚动条样式

    个人感觉angular中文文档的滚动条样式非常棒,于是乎就扒了下来 https://www.angular.cn/ body::-webkit-scrollbar { /* 定义了滚动条整体的样式 * ...

  7. Saliency Detection: A Spectral Residual Approach

    Saliency Detection: A Spectral Residual Approach 题目:Saliency Detection: A Spectral Residual Approach ...

  8. jmeter手写脚本,使用正则获取cookie(禁用cookies管理器)

    注:这里以bugfree为例 1.bugfree登录时会有重定向,这会导致每个URL都会有.因此要手动获取cookie的时候,需要去掉重定向勾选 正则获取动态PHPsession 获取到值后,放到信息 ...

  9. Codeforces 524 解题报告

    打的很快乐的一次比赛hiahiahia, 才A掉4题rating就涨了100+ 距离比赛\(3\)天了, 由于博主实在太颓, 又补掉了\(E\)题, 到现在才发解题报告 A. 语法题, 读入输出就行了 ...

  10. 201771010134杨其菊《面向对象程序设计(java)》第十七周学习总结

    第十七周学习总结 1. 程序是一段静态的代码,它是应用程序执行的蓝本.进程是程序的一次动态执行,它对应了从代码加载.执行至执行完毕的一个完整过程.操作系统为每个进程分配一段独立的内存空间和系统资源,包 ...