`
jsjxqjy
  • 浏览: 116343 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

页面转码 及unterminated string constant

阅读更多

unterminated string constant 错误:主要原因是 由于在给JS 方法传递参数的时候,参数中包含 空格 ,就会把这个方法后面的 括号部分给丢失掉 。

例如:

function viewDetail(val1,val2) {};

 

 

使用的时候  oncklick = "viewDetail(val1,val2) ;"    传递有空格的参数会变成 -->  给val1 = 'a  bc' ;

 

viewDetail('a    ,这个问题经过仔细想了下,其实是 浏览器做的处理,对于 获取页面 包含空格的 HTML代码的时候,会把页面的字符 编码 再传递给JS ,  空格,在编码后,会变成乱码,导致JS编译不了,无法执行!

 

针对于上面的问题:我是这样解决的----> 隐藏域 提交表单

 

(由于我的页面都是ajax进行局部更新的 ,除了可以添加参数,还可以 进行表单提交数据。)

 

我 具体是把这个包含 空格的字段 没有作为js 参数 ,而是 赋值给一个隐藏域 去做的

 

<input type=hidden />

 

 

这样处理的优点是: 1。 不需要考虑中文乱码问题,前提是 你的页面已经做了编码的设置

                             2。 不需要转码,解码-->这个如果你不是太熟悉的话  不要弄!

 

 

---------------------------------------------------------------------------->

页面转码

 

可以参考下面的超链

http://www.pqshow.com/design/Javascript/200909/10463.html

 

http://www.gzu521.com/campus/article/design/200606/16579.htm

 

-------------------下面是截取 其中的方法------------------------------------>

 

方法一 : 创建div对象 ,让页面自己去编码解码

 

function HTMLEncode(html)
{
	var temp = document.createElement ("div");
	(temp.textContent != null) ? (temp.textContent = html) : (temp.innerText = html);
	var output = temp.innerHTML;
	temp = null;
	return output;
}

function HTMLDecode(text)
{
	var temp = document.createElement("div");
	temp.innerHTML = text;
	var output = temp.innerText || temp.textContent;
	temp = null;
	return output;
}

 

用途:就是当你需要把页面的一些 包含了特殊符号的 HTML , 获取并传递到其他页面显示的时候,可以这样使用

 

方法二 : 这个是 通过js 替换 特殊符号,变为HTML的 一种编码方法

 

 

function HTMLEncode2(str)
		    {   
		         var s = "";
                 if(str.length == 0) return "";
                 s    =    str.replace(/&/g,"&amp;");
		         s    =    s.replace(/</g,"&lt;");
		         s    =    s.replace(/>/g,"&gt;");
		         s    =    s.replace(/ /g,"&nbsp;");
		         s    =    s.replace(/\'/g,"&#39;");
		         s    =    s.replace(/\"/g,"&quot;"); 
        		 return   s;   

		   }   
		  function HTMLDecode2(str)
		  {   
		        var s = "";
		        if(str.length == 0)   return "";
		        s = str.replace(/&amp;/g,"&");
		        s = s.replace(/&lt;/g,"<");
		        s = s.replace(/&gt;/g,">");
		        s = s.replace(/&nbsp;/g," ");
		        s = s.replace(/&#39;/g,"\'");
		        s = s.replace(/&quot;/g,"\"");
		        return   s;   
		  }

 

 上面这种方法,对于页面的字符,不是乱码的时候的情况可以使用,当出现乱码的时候(你表面上是看不出来有乱码的)

可以使用 。

 

 

方法三 、后台的数据编码 :

 

就是 用java代码 对于特殊的字符串 进行一个特换转码的方法:

 

/**
	 * 转换成HTML中可以对value赋值的字符串,用于对form中的元素赋值
	 * 
	 * @param src
	 * @return
	 */
	public static String escapeFormValue(String src) {
		if (src == null) {
			return null;
		}
		src = src.replaceAll("/br","");

		int len = src.length();
		StringBuffer sbResult = new StringBuffer(len);
		char ch;

		try {
			for (int i = 0; i < len; i++) {
				ch = src.charAt(i);
				switch (ch) {
				case '\"':
					sbResult.append("&quot;");
					break;
				case '\'':
					sbResult.append("");
					break;
				case '&':
					sbResult.append("&amp;");
					break;
				case '>':
					sbResult.append("&gt;");
					break;
				case '<':
					sbResult.append("&lt;");
					break;
				case '\n':
					sbResult.append("");//&#13;
					break;
				case '\r':
					sbResult.append("");//&#10;
					break;
				default:
					sbResult.append(ch);
					break;
				}
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return sbResult.toString();
	}

 

 

 

 把 作为页面需要显示的字符 变为 &开头的 代码 :

只有"<" 字符和"&"字符对于xml来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。

 

 

 &amp; 或 &             &         和
&lt; 或<                   <          小于号
&gt; 或>                  >         大于号
&quot;                    "             双引号
&nbsp;                                 空格
&copy;                   ©            版权符
&reg                      ®             注册符

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics