Невидимый символ приводит к неожиданной ошибке EOF

При попытке обработать строку, с которой я сталкиваюсь

Error: SyntaxError: Unexpected EOF

Я не могу контролировать, как генерируется строка. Мне удалось изолировать проблемный символ (символы) с помощью дихотомии с помощью substring(), однако он не печатается ни с помощью console.info(), ни с помощью JSON.parse() : я получаю

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

все же

> c.length;
1

Все, что я знаю, это то, что за ним следует \n.

Как я могу определить его и избавиться от него?

Обновлять

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

Это вообще персонаж??

Какой код дает вам эту ошибку?

p.s.w.g 29.05.2019 23:24

@ p.s.w.g Ошибка выдается кодом PhantomJS на платформе Apify.

Skippy le Grand Gourou 29.05.2019 23:27

Попробуйте обрезать ввод: JSON.parse(c.trim())

Get Off My Lawn 29.05.2019 23:30

@GetOffMyLawn trim() действительно удаляет символ, но, поскольку он находится в середине строки, я не могу его использовать.

Skippy le Grand Gourou 29.05.2019 23:38

Кстати, это символ LINE SEPARATOR (U+2028), закодированный в UTF-8, а затем закодированный в URI. Этот является считается пробел в Unicode, поэтому должен будет в порядке, но, возможно, PhantomJS использует другое определение пробела.

p.s.w.g 30.05.2019 00:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
345
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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("")

Другие вопросы по теме