【问题标题】:Invisible character leads to Unexpected EOF error不可见的字符导致意外的 EOF 错误
【发布时间】:2019-05-29 21:21:51
【问题描述】:

在尝试处理我面临的字符串时

错误:语法错误:意外的 EOF

我无法控制字符串的生成方式。我设法通过substring() 的二分法隔离了有问题的字符,但是console.log()JSON.parse() 都没有打印它:我明白了

> console.log(c);
""
> JSON.parse(c);
""

> c.length;
1

我只知道它后面跟着一个\n

我如何识别并摆脱它?

更新

> console.log(encodeURIComponent(c));
%E2%80%A8

Is this even a character ??

【问题讨论】:

  • 什么代码给你这个错误?
  • @p.s.w.g 该错误是Apify平台上的PhantomJS代码抛出的。
  • 尝试修剪输入:JSON.parse(c.trim())
  • @GetOffMyLawn trim() 确实删除了该字符,但由于它位于字符串的中间,我无法真正使用它。
  • 顺便说一句,这是一个 LINE SEPARATOR 字符 (U+2028),UTF-8 编码,然后是 URI 编码。这个被Unicode认为是whitespace,所以它应该没问题,但也许PhantomJS使用了不同的空白定义。

标签: javascript character eof invisible


【解决方案1】:

假设这是唯一有问题的字符,并且由于其百分比编码已被识别,解决方案是替换解码后的百分比编码字符串:

> c.length;
1
> let badchar = decodeURI("%E2%80%A8");
> let regex = new RegExp(badchar, "g");
> newc = c.replace(regex, "");
> newc.length;
0

或者如果由于某种原因RegExp 不可用:

> newc = c.split(badchar).join("")

【讨论】:

    猜你喜欢
    • 2015-06-23
    • 1970-01-01
    • 2020-11-26
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多