关于URL编码的问题
encodeURI,decodeURI
:不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+’,适合对整个url
encodeURIComponent decodeURIComponent
: 不会对下列字符编码 ASCII字母 数字 ~!*()’,适合对url参数
content-type
application/x-www-form-urlencoded
: body的内容为a=b&c=d,服务端接收时会转为键值对并会把+转成空格,需要对值做encodeURIComponentapplication/json
: body的内容为JSON.stringify({a:1}})
字符串编码
escape unescape
:不会对 ASCII 字母、数字和@/*+进行编码,但已不建议使用
escape和encodeURI区别 :escape
在处理 0xff 之外字符的时候,是直接使用字符的 unicode 在前面加上一个 「%u」encodeURI
先进行 UTF-8,再在 UTF-8 的每个字节码前加上一个 「%」
nodejs 处理编码文件
iconv-lite
: 纯js实现,少了c++到js的转换 比node-iconv快
|
|
encoding
: 对node-iconv和iconv-lite的再次封装,encoding首先调用node-iconv,如果node-iconv无法解析,则调用iconv-lite作为替代方案.
encoding模块就一个方法convert(),使用方法为:encoding.convert(text, toCharset, fromCharset)。
- text: 需要转换的对象,可以为Buffer或者String对象。
- toCharset: 转换后的编码。
- fromCharset: 转换前的编码,缺省为uft8。
转换后的输入结果为Buffer对象。
URL、URI、URN
URI
:统一资源标识符
URL
:统一资源定位器,具体的URI
URN
:统一资源命名,如mailto:java-net@java.sun.com