您的位置:首页 > 其它

由/u2028 unexpected token错误 引发的思考

2017-07-21 10:57 225 查看
由/u2028 unexpected token 引发的思考

如图,有时候拷贝代码的时候,不小心就出现错误。



于是查看代码,{}内已经看不到有任何字符了,但其实将鼠标光标焦点放到{}中,按下退格键,居然没有把{这个字符删除,那说明,{}之间确实还有其他字符。

比如“{
}”这里大括号里,就有一个隐藏的特殊字符/u2028。
错误的“{
}”
正确的“{}”
看起来简直一模一样。但是复制下来,用工具进行Unicode编码。

看下图是两种写法的区别,不信,你可以直接复制上面两个{}进行Unicode编码。

错误写法Unicode编码后:



正常写法Unicode编码后:



看了编码图,很容易看出来区别,正确和错误之间,相差了一个/u2028.这是个什么东西呢?

请参看下表:
Unicode 字符值转义序列含义类别
\u0008\bBackspace 
\u0009\tTab空白
\u000A\n换行符(换行)行结束符
\u000B\v垂直制表符空白
\u000C\f换页空白
\u000D\r回车行结束符
\u0022\"双引号 (") 
\u0027\'单引号 (') 
\u005C\\反斜杠 (\) 
\u00A0 不间断空格空白
\u2028 行分隔符行结束符
\u2029 段落分隔符行结束符
\uFEFF 字节顺序标记空白
由此可见,以后再遇到莫名其妙的编辑器报错时,然后查代码又查不到明显语法错误,那极有可能是特殊字符在作祟。

可以试试,去特殊字符的方法。

String xx = "goal String".replace("/u2028", "");//将隐藏换行符号去掉

String xx = "goal String".replace(",", ",");//将全角逗号转换半角

String xx = "goal String".replace(".", ".");//将全角点号转换半角由此可见,以后再遇到莫名其妙的编辑器报错时,然后查代码又查不到明显语法错误,那极有可能是特殊字符在作祟。

可以试试,去特殊字符的方法。

String xx = "goal String".replace("/u2028", "");//将隐藏换行符号去掉

String xx = "goal String".replace(",", ",");//将全角逗号转换半角

String xx = "goal String".replace(".", ".");//将全角点号转换半角
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息