Javascript原生base64编码解码函数btoa(atob)用法详解

window.btoa和window.atob分别编码与解码base64,它们在现代浏览器中受到广泛的支持。

一、兼容性

btoa和atob在除IE之外的浏览器上都能够得到良好的兼容:
IE:10+
Chrome:4+
Firefox:2+
Safari:3.1+
Opera:11.5+

二、编码base64函数btoa
提示:函数名中的b表示binary即原始的待编码数据,a表示ASCII,即编码后的结果(base64编码后,就只是纯的ASCII字符),btoa就是将binary的数据转为ASCII字符(串)。

用法:
console.log(btoa('Hello world!'));//SGVsbG8gd29ybGQh

三、解码base64函数atob
可以将base64字符串还原成二进制格式(通常是原始的字符串,JavaScript中字符串就是一种序列化的二进制数据)

用法:
console.log(atob('SGVsbG8gd29ybGQh'));//Hello world!

四、原始数据含非ASCII字符(例如中文)时的处理
执行下面的代码:
btoa('我是中文');
会有如下的报错信息:

Uncaught DOMException: Failed to execute ‘btoa’ on ‘Window’: The string to be encoded contains characters outside of the Latin1 range.(…)

说明只能对ASCII字符进行编码,对于中文来说,可以通过下面的方式进行编码:
console.log(btoa(unescape(encodeURIComponent('我是中文'))));//5oiR5piv5Lit5paH

解码方法:
console.log(decodeURIComponent(escape(atob('5oiR5piv5Lit5paH'))));//我是中文

nginx中文文档-ngx_stream_map_module

此页面版本:2016-07-05,577bcc35-cc0
ngx_stream_map_module 模块(1.11.2+)创建变量,其值取决于其他变量的值。

示例配置

map $remote_addr $limit {
    127.0.0.1    "";
    default      $binary_remote_addr;
}

limit_conn_zone $limit zone=addr:10m;
limit_conn addr 1;

map

语法:map string $variable { … }
默认:—
上下文:stream

创建新变量,其值依赖于指定在第一个参数中的一个或多个源变量。
由于变量只有在使用的时候会被计算,可以声明一个很大的变量映射表,而不会带来连接的额外开销。
在map块中的参数指定了一个源与结果值之间的映射关系。
源值定义为字符串或正则表达式。
字符串匹配忽略大小写。
正则表达式可以以“~”标识起始,表示大小写敏感的匹配,也可以以“~*”标识起始,表示大小写不敏感的匹配。一个正则表达式可以包含名称和位置捕获,稍后可以用于其他指令。
如果源值匹配任一个下面描述的特殊参数名,需要用“\”标识作为前缀。
结果值可以包含文本、变量以及它们的混合。
指令可以支持三种特殊参数:
default value
如果源值不匹配任何指定的变量,设置结果值。当没有指定default时,默认结果值是一个空字符串。

hostnames
表明源值可以是带前缀或后缀的主机名:

*.example.com 1;
example.*     1;

下面两个记录:

example.com   1;
*.example.com 1;

可以合并为:

.example.com  1;

该参数需要在列表值之前指定。

include file
包含一个含值的文件,可以有多个包含。

如果源值匹配超过一个定义的变量,例如同时匹配一个标记和正则表达式,先匹配的变量会被选中,按照下面的优先级:

  1. 没有标记的字符串值
  2. 最长的前缀标记字符串,例如“*.example.com”
  3. 最长的后缀标记字符串,例如“mail.*”
  4. 第一个匹配的正则表达式(按出现在配置文件中的顺序)
  5. 默认值

map_hash_bucket_size

语法:map_hash_bucket_size size
默认:map_hash_bucket_size 32|64|128
上下文:stream

为映射变量哈希表设置一个桶的大小。默认大小取决于处理器的缓存行大小。

map_hash_max_size

语法:map_hash_max_size size
默认:map_hash_max_size 2048
上下文:stream

设置变量映射哈希表的最大大小。