未结束的字符串常量

您所在的位置:网站首页 未结束的字符串常量错误 未结束的字符串常量

未结束的字符串常量

2024-03-06 20:30| 来源: 网络整理| 查看: 265

今天在做JAVASCRIPT的时候,发现老是出现”未结束的字符串常量”.

自己找了下应该是传参数的时候,有特殊字符引起的.网上也找了下,也有好多出现这种情况.做下总结,以方便以后查阅.

1.JAVASCRIPT引用时,使用的字符语言不一致. 比如:.xxx.js文件内部使用的是GB2312的格式,外面调用使用的是UTF-8,所以文件内部部分特殊字符因为格式不一致,出现乱码,造成此原因.

就是js文件与页面编码不一致,导致文件内部特殊字符因格式不一致就会在解码时出现乱码,从而导致编译器在未到达引号( "或' )前提前结束,产生“未结束的字符串常量”。

解决办法:如果是外部引入js文件 ,可以在

中设置charset="###"与你的网页编码一致就可以了;

2.JAVASCRIPT输出HTML字符时,前后标记不匹配. 这种比较常见,往往在输出字符串时,出现单引号(‘)或双引号(“)不配对,或者是在document.write()的时候,没有正确输出单引号(‘)或双引号(“)

解决办法: 让前后引号正确配对;共有两层嵌套时,双引号内嵌套单引号是正确的,单引号内嵌套双引号也是正确的。共有三层嵌套时,最里面一层引号不能和最外面一层相同,这样是错误的,可以在最里面一层引号前加上转义字符“\”。

3.参数内出现HTML标记语言或包含换行符 我今天所遇到的是这种情况.因为我所得到的数据以参数形式传给一函数,结果该数据里包含换行符,造成了此错误. 如:一般测试时只使用单行的数据,是正常的,未出现这个错误,. 当测试时使用多行数据,并使用回车链换行,就出行了此错误.因为里面包含了换行符

对于第3种情况,我的解决方法有:

(1):不直接将该数据以参数形式传递,而是先将其赋值在一个隐藏的文本内,需要调用的函数里只需读取该文本里的内容即可.

比如

在页面调用javascript的函数,如test(sm) 其中sm是从数据库里读出的值 如果sm的值里有换行符,页面会出现:未结束的字符串常量 解决方法:

用一个隐藏的  

function test(a)

{

$("#txtCon").val(a);

}

在JS里:   test(document.all.mm.value);

或者

test(replace(sm,Chr(13)   &   Chr(10), " ") ); 将转义字符替换掉

(2)

A页面  A.aspx.cs string a="你好啊\n你好\n"; A.aspx 给文本框赋值: $("#txtCon").val("");

把string a 改成 string a="你好啊\\n你好\\n";  就好了

4、传递的参数变量内或者脚本变量中包含HTML标记语言、包含换行符或包含引号:

          这种情况是最难发现的,容易忽略了变量内部文字原因产生的,将字符串以参数形式传递给一个函数或者href、action时,该字符串里包含换行符、引号或HTML标记,造成了此错误。如:a.测试时使用单行数据是正常的,未出现这个错误;使用多行数据并使用回车键换行,就出现了此错误,因为里面包含换行符。源码 b.mArray[]="";看似无误,但是、中包含了多个单双引号,就出现了此错误。

  解决办法:

 对于这种情况,我的解决方法有两个,一个是将字符串变量进行替换操作,将双引号替换成单引号,单引号替换成“\"”,不过这样在传递后读取时还得替换成原文;第二种方法是不直接将数据以参数形式传递,而是先将其赋值给一个隐藏文本内,函数里只需读取文本中的内容即可。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3