js或jsp乱码问题

统一编码

让jsp和js的编码统一,在jsp里声明加载js的编码格式,浏览器会按当前jsp的编码格式解析引入js文件。

jsp在引入js的中加入charset属性

 
  

我遇到问题,修改项目中web.xml编码设置

之前配encodingFilter过滤器时,没有过滤到js

	
		encodingFilter
		*.*
	

后来给为如下就好了

	
		encodingFilter
		/*
	

完整配置

	
		encodingFilter
		
			org.springframework.web.filter.CharacterEncodingFilter
		
		
			encoding
			UTF-8
		
		
			forceEncoding
			true
		
		
			crossDomainSessionSecurity
			true
		
		
			allowScriptTagRemoting
			true
		
		
			
				allowGetForSafariButMakeForgeryEasier
			
			true
		
	
	
		30
	

	
		encodingFilter
		/*
	

 

用服务器语言声明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代码更加多样也更加灵活,实现更加复杂的功能,比如我们

1

在这个xx.php写

1

2

3

4

$ip = getenv('REMOTE_ADDR');

echo "alert($ip);";

?>

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

你可能感兴趣的:(前端)