通常状况下,URL 中的参数应使用 url 编码规则,即把参数字符串中除了 -_. 以外的全部非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。可是对于带有中文的参数来讲,这种编码会使编码后的字符串变得很长。若是但愿有短一点的方式对参数编码,能够采用 base64 编码方式对字符串进行编码,可是 base64 编码方式不能处理 JavaScript 中的中文,由于 JavaScript 中的中文都是以 UTF-16 方式保存的。而 base64 只能处理单字节字符,因此不能直接用 base64 对带有中文的 JavaScript 字符串进行编码。可是能够经过 utf.js 这个程序中提供的 utf16to8 来将 UTF-16 编码的中文先转化为 UTF-8 方式,而后再进行 base64 编码。这样编码后的字符串,在传递到服务器端后能够直接经过 base64_decode 解码成 UTF-8 的中文字符串。可是还有个问题须要注意。base64 编码中使用了加号(+),而 + 在 URL 传递时会被当成空格,所以必需要将 base64 编码后的字符串中的加号替换成 %2B 才能看成 URL 参数进行传递。不然在服务器端解码后就会出错。javascript
因此咱们须要作的就是encodeURI(str).replace(/\+/g,'%2B')java
转:技术成就梦想服务器