在web项目开发过程中,JavaScript已经是不可避免的一门技术。
js产生乱码的一种情况
加入有个index.jsp页面,引入了外部的js文件,如下:
<html>
<head>
<script src="js.index.js" charset="gbk"></script>
如果这个index.js文件有如下代码
alert("请录入姓名!");
这种必录管控项应该是很常见的提示语,但是如果index.jsp页面引入script没有设置charset,浏览器就会以当前这个页面的默认字符集解析这个JS文件,如果外部的JS文件的编码格式与当前页面的编码格式一致,那么可以不设置这个charset。但是script.js文件与当前页面的编码格式不一致,如script.js是UTF-8编码而页面是GBK编码,上面代码中的中文提示就会变成乱码。
js向后台发起请求,传参乱码问题
通过JS调用URL向后台发起请求,URL参数编码是受浏览器影响的,IE浏览器默认是操作系统的编码格式,而在Firefox下则是UTF-8编码。另外不同的js框架可能对URL的编码处理也不一样。那么如果JS发起请求到后台由于服务器端中文编码格式一般都是GBK或者GB2313,所以会出现乱码问题
解决办法:
js前端用encodeURIComponent两次编码,如encodeURIComponent(encodeURIComponent(str)),这样在JAVA端通过request.getParamter()用GBK解码后获取的就是UTF-8编码的字符串,如果JAVA服务器端想用这个字符串,在在用UTF-8解码一次就可以得到参数的值,如果将这个UTF-8字符串直接返回到前端可以正常显示。
关注微信公众号
java学长
学习更多java技术干货,提升职场技术水平!![](https://img-blog.csdnimg.cn/20200601100352852.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ppYXJ1aV9tYW1h,size_16,color_FFFFFF,t_70)