js或jsp乱码问题

统一编码

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

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

 

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

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

	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>*.*</url-pattern>
	</filter-mapping>

后来给为如下就好了

	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

完整配置

	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>
			org.springframework.web.filter.CharacterEncodingFilter
		</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>crossDomainSessionSecurity</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>allowScriptTagRemoting</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>
				allowGetForSafariButMakeForgeryEasier
			</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<session-config>
		<session-timeout>30</session-timeout>
	</session-config>

	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

用服务器语言声明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

<script type="text/jscript" charset="gbk" src="xx.php"></script>

在这个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文件,当前前提是,连接的是服务端文件,我们就可以通过这样的方式解决。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值