引言
今天在工作过程中遇到一个很奇怪的问题:
同样的中文传参在PC端浏览器中新的页面接受正常,
但是测试人员在测试移动端时却发现中文乱码。
google,百度了一段时间,一直没有找到问题的原因。
(如果你知道原因也希望你能告诉我,谢谢~)
虽说没有找到为什么会造成这样不一致,但是还是解决了。
利用Global对象的encodeURI()和encodeURIComponent()方法,以及其对应的decodeURI()、decodeURIComponent()方法。
encodeURI()
此函数可把字符串作为 URI 进行编码,
此方法接收一个字符串URIstring,含有 URI 或其他要编码的文本,
返回值为URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
提示:如果 URI 组件中含有分隔符,
比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。
encodeURIComponent()
此函数可把字符串作为 URI 组件进行编码,
此方法接收一个字符串URIstring,含有 URI 组件或其他要编码的文本,
返回值为URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,
前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串),
因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。
decodeURI()
此函数可对 encodeURI() 函数编码过的 URI 进行解码,
参数为一个字符串URIstring,含有要解码的 URI 或其他要解码的文本,
返回值为URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换
decodeURIComponent()
此函数可对 encodeURIComponent() 函数编码的 URI 进行解码,
参数为一个字符串,含有编码 URI 组件或其他要解码的文本,
返回值为URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。