一般情况下,项目采用了UTF-8的字符集格式,那么所有的js文件的格式也都为UTF-8格式后就不会有任何乱码的问题出现。但是如果项目采用了GBK等编码,那么js文件的编码格式就不能这么随便了,需要根据你的项目的编码情况而定。
就拿项目编码为GBK为例吧。
首先,jsp页面文件为GBK格式,那么他的头部也就有如下的设置:
<%@ page contentType="text/html;charset=GBK"%>
head标签中有:
<meta http-equiv="content-type" content="text/html; charset=GBK">
然后这个页面引入了一个js,那么这个js文件的编码就必须为GBK格式。
如果这个js中有ext的ajax请求去获得另外一个js并执行这个js,那么这个被ext的ajax所请求的js文件的编码格式就必须为UTF-8格式的。
如下所示:
- Ext.Ajax.request({
- url:"${ctx}/scripts/app/manager.js",
- scope: this,
- success:function(response){
- (response.responseText);
- }
- });
那么这里的manager.js文件就必须为UTF-8格式的。
中文化问题,在 ext-all.js 后面,挂上 ext-lang-zh_CN.js :
1. <script type="text/javascript" src="<%=contextPath%>/public/js/ext-base.js"></script>
2. <script type="text/javascript" src="<%=contextPath%>/public/js/ext-all.js"></script>
3. <script type="text/javascript" src="<%=contextPath%>/public/js/ext-lang-zh_CN.js"></script>
注:ext-lang-zh_CN.js文件存放在 ext-2.0-rc1/source/locale 目录下
对中文字体,要对默认的 css 加上修正,例如:
<LINK rel="stylesheet" href="public/css/ext-all.css">
<LINK rel="stylesheet" href="public/css/ext-all-patch.css">
最近项目开发需要用到Ext JS创建可编辑表单,但是在使用过程中由于JSP页面是使用GBK编码,而Ext JS是使用UTF-8编码,则在表单提交后,在后台Struts Action中取得的值会变成乱码。因为Struts使用了编码过滤器,把字符编码转化为GBK的,所以我使用Ext JS页面的编码为UTF-8,过滤器把字符编码变成GBK,在后台重新转码却转不回去了。在这个问题上困惑了很久一段时间,苦思冥想之下,终于搞定了,特贴出来供大家分享。
1:使用Ext JS提供的Build your own Ext功能,创建你自己项目中所需要的Ext脚本文件。在每个项目中并不是需要引入所有的Ext脚本文件,只需要引入你项目中所必须的脚本文件。
2:选择你在项目中使用的其他JS框架。
3:选择你项目中使用到的Ext功能模块。如果不确定该选择哪些不该选择哪些,干脆就全部选择。点击 Build,保存ext.js文件到本地硬盘。
4:使用UltraEdit打开保存在本地硬盘上面的ext.js文件,选定所有的文件内容,然后CTRL+C。
5:点击UltraEdit工具栏上的‘新建’按钮,创建一个新的文本文档,然后CTRL+V,复制ext.js文件到此新文本文件中。
6:CTRL+S保存此新建文件,输入文件名,选择文件类型为‘文本文件(.txt)’,换行符选择默认,格式为‘UTF-8’,点击‘保存’按钮保存。
7:找到新保存的文本文档,右键使用记事本打开,在记事本中另存为输入文件名,保存类型为文本文件(*.txt),编码为ANSI,点击保存按钮保存。
8:重命名此文本文档为ext.js。
9:OK,万事俱备,把上面得到的ext.js导入项目中,把页面中用到的所有ext相关的脚本文件删掉,换上新导入的ext.js。至于ext相关的css文件,用到什么就导入什么吧,如果css样式不对的话,那就也把css使用记事本另存为ANSI编码的吧。