js加载出现乱码的原因是什么,很多人会说是因为编码不统一,以前的我也是这么想的,其实不然,js加载页面出现乱码的真正原因是没有正确的告诉浏览器其本身的编码。也就是说,如果本身是utf-8,就要告诉浏览器“我”的编码为utf-8,如果是别的就要告诉浏览器是别的。也就是,如果html页面本身的编码其实是可以和js的编码不一样的。而为什么会出现乱码,就是因为有中文,只有有中文字符的时候才可能出现乱码。下面就说一下我总结的三种解决js加载内容乱码的方法!

首先申明,我这里说的js乱码是引入js文件,并不是直接将js写在了页面当中!

第一种方式——编码统一

我们以前觉得出现乱码的原因是因为编码不统一,就是因为我们设置编码统一之后,就解决了问题,所以,让html和js的编码统一,是最简单的一个乱码解决方式,原因是什么,是因为,如果你在加载js的时候,并没有声明js的编码格式,那么浏览器会默认的按照当前html的编码格式进行解析引入的js文件,如果你的js和本身页面编码不一样,并且js中引入了中文字符,那么肯定会出现乱码的。要知道,程序都是笨笨的。

第二种方式——在引入js的标签中加入charset属性

我们一般情况下引入js是这样引入的:

这样引入,那么这个xx.js就会以本身页面的编码进行解析,而如果两个的编码不一样,如果这个js是gbk的编码,那么我们可以这样写

那么,只要是保证这个js文件的确是gbk或者对应的,你自己写的编码,那么无论在哪种编码的页面中引用这个js,都不会出现编码问题,这样写才是最规范的,第一种方式会出现一种情况,就是有很少情况下,由于一些不规范的原因,我们会发现即使是编码统一的时候,也会出现乱码,那么我们最好就是用第二种方式来写。

第三种方式——用服务器语言声明header头信息

这种方式是比较少见的一种方式,适合某些特定的情况。编码信息都是在头信息中声明的。而js本身并没有像html mate标签这样的声明头信息的标签,所以要借助服务器语言,我是学php的,其header(“Content-Type:text/html;charset=gb2312″);就可以声明头信息,而如何写这个js,就是把js内容写在php文件中,这里就有一个知识点,就是js文件并不一定非写在js为后缀的文件中,其实可以写的服务器文件(php文件等)中,php以<? ?>来包括服务端解析的代码,而之外的或者echo输出的代码都会发送到客户端,所以,我们将js代码写到<??>外部或者直接echo出来,那么这个js代码同样可以起作用,这就是我们会发现,我们很多接口等程序,明明是script标签,引入的却是一个php文件,或者其他的服务端文件,就是这个道理,这样来做,就更加的灵活了,因为我们可以借助服务端语言,进行读取数据库等等更为复杂的操作,让这个js代码更加多样也更加灵活,实现更加复杂的功能,比如我们

在这个xx.php写

这样我们访问这个html页面,就会弹出ip地址,我们就可以对他进行其他操作等。当然,既然是连接服务端文件,就不能是直接双击打开这个html了,一定是通过浏览器访问才可以,或者是连接这个php文件的src要写http形式,目的就是保证这个php文件要是通过服务器解析访问的,如果你这样写相对目录的形式连接php,你直接打开html,就相当于直接打开了这个php文件,而不是通过http访问的,这个php是不能被解析的。讲的复杂了,但是这是一个很重要的知识点。如果单从乱码而言,这种引用js文件的方式适合我们已经引用了,不能再修改这个引用文件了,比如我们在一些外链站发了文章,不能再修改了,那么,我们可以修改连接的我们网站上的这个js文件,当前前提是,连接的是服务端文件,我们就可以通过这样的方式解决。

本文链接: http://www.521php.com/archives/1220/

 

 

程序本天成,妙手偶得之!我们只是代码的搬运工!

转载请注明:http://www.521php.com/archives/1220/

发表评论

昵称:

网址:

eg.博客主题调用的是Gravatar头像,你可以通过邮箱注册获得头像.
/ 快捷键:Ctrl+Enter