2016年4月

HTML 编码

URL 编码

URL使用%编码,即 %后边跟该字符对应的 UTF-8 编码后的16进制值, 每2个前面加一个%, 不是codepoint.
如 encodeURI("新华网.中国") = %E6%96%B0%E5%8D%8E%E7%BD%91.%E4%B8%AD%E5%9B%BD
如 %65bay.com = ebay.com

JavaScript 使用 escape(), encodeURI(),encodeURIComponent(). escape() 方法已经被废弃

  1. 协议或schema 是固定的那么些协议
  2. 主机名 只能是白名单(字符数字和-)里面的
  3. path 浏览器一般使用UTF-8 去解码
  4. query 参数 一般使用html的Content-Type去解码
  5. anchor 一般使用UTF-8 ? 还是用 Content-Type 去解码?

HTML 内容编码

HTML 文档里可以出现2种编码

  1. <, >, &, ', ", 空格, 这些HTML 标签使用的的编码, 可以使用 %gt; %lt; %nsbsp; 来编码;
  2. 另外可以用Unicode的进制编码 %#xH; (16进制), %#DD (10进制)编码

JavaScript: 这个问答有2个非常好的答案 HTML-encoding in JavaScript/jQuery
Java 版本:

import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
String escaped = escapeHtml4(source);

JavaScript 内容编码

  1. 某些控制字符 \t, \r \n \b \v \f
  2. 8进制3位数字 \145 : e \060 :10进制0
  3. 16进制2位数 \x65 \x30
  4. Unicode 4位数 \u0065 \u7530 \u0061lert(1) 这种能用在字符串之外的位置, 其它则不可

CSS 编码

  1. CSS 属性中可以使用十进制, 十六进制表示
  2. CSS 兼容HTML中的进制表示法.

IPv4 在浏览器的表示

IP 地址有V4 和 V6 2个版本.
IPv4的最常用表示形式是: 202.108.8.82
其实它是4个字节的数字, 人们为了好记, 中间加了3个点分隔.
它背后的二进制格式是: 11001010 01101100 00001000 01010010 [javascript 用 (202).toString(2) 快速转换,自己补足8位].

转换为一个10进制是: 3396077650 [这么算的: 202*256*256*256+108*256*256+8*256+82].
转换为一个16进制是:0xca6c0852 [(3396077650).toString(16)]

中间加点的格式:
8进制:0312.0154.0010.0122
10进制:202.108.8.82
16进制:0xca.0x6c.0x8.0x52

尝试把上面这5种形式输入浏览器的的地址栏吧.