javascript中文乱码问题分析及解决方案

引用外部js乱码

在web开发中我们一般都会不可避免的使用js。我们可以将js代码直接放在页面中即通过内部使用js。但是为了给页面良好的"瘦身"我们一般都会将js代码放在外部,然后通过src引用。这个时候我们就需要注意一个问题:编码问题。如果web页面也js采用不同编码,这个时候就会出现乱码。(内部使用js不需要注意编码问题,因为他们采用的是同一种编码)

对于大多数的web页面,我们一般都是使用如下两种编码:UTF-8、GB2312。所以我们只需要统一页面和js编码就可以解决乱码问题:
对于GBK页面引用编码为UTF-8编码的JavaScript文件如果出现乱码问题,可以使用下面的代码来解决

<script type=”text/javascript” src=”test.js” charset=”utf-8″></script> 

同样在UTF-8页面中引入编码为GBK的JavaScript文件乱码问题了,可以使用如下方式:

<script type=”text/javascript” src=”test.js” charset=”gb2312″></script> 

此方法是对于在js文件中出现汉字中文,以及其他容易造成在GBK与UTF-8编码错误字符的时候使用,

注:Web页面和js文件最好是使用同一种编码,对于纯英文的就不需要了,如果编码已经统一,引入的js文件中文依然乱码,则加入charset=”″声明就好。

javascript中的3个编码函数

   escape/unescape

    除了ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码;

    因此如果想对URL编码,最好不要使用此方法;

    escape()适合对url的参数进行编码。

  encodeURI/decodeURI

  用于编码整个URL,因为URL中的合法字符都不会被编码转换;

    进行url跳转时可以整体使用encodeURI。

    例如:Location.href=encodeURI("http://www.XX.com/Product/ProductShow.aspx?pid=468&SecondClass=35");

  encodeURIComponent/decodeURIComponents

    对url的参数编码,特别在参数也是一个url的情况,如果不编码会影响整个url跳转。

    例如:document.write('<a href="http://passport.baidu.com/?logout&aid=7&

    u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');

    在向后端传值时,参数存在特殊字符时,我们一般使用这种编码方法

原文地址:https://www.cnblogs.com/v10258/p/3064243.html