К основному контенту
LIFEL
рекомендует

Ошибка открытия курса CourseLab из-за непечатных символов

19.09.2022
Андрей Матюков
Если вы поработали в проекте КурсЛаба, а после закрытия он не открывается, то читаем решением
Вам знакома такая ошибка?
CourseLab, КурсЛаб, Websoft, Алексей Корольков
Три раза за 7 лет работы в «КурсЛабе» я наступал на неё. В первом случае, когда закрытый курс вдруг перестал открываться. Тогда я вообще не знал, куда копать, и отправил проект в техподдержку WebSoft. В ответ мне прислали открывающийся проект и сказали про нечитаемый символ. Тогда причиной появления такого символа было то, что я случайно притянул его из Word или Power Point, вставив в CourseLab текст с форматированием.

В другом случае я уже сам справился, найдя нужное место в нужном файле и почистил такой непечатный символ. И вот вчера вновь попался на эту проблему, но нашла она меня не так, как раньше.

По ходу вёрстки очередного курса мне понадобилось нескольким однотипным объектам дать «говорящие» названия. В «КурсЛабе» это делается сменой идентификатора. Скопировав второй объект из первого и давая ему название, у меня сначала не пропечаталось нижнее подчеркивание, и я его вставил потом уже — в середину текста. Возможно, в процессе этого я нажал на пробел, точный порядок действий не запомнил. А идентификатор не допускает пробелов. Затем, получив нужное мне название идентификатора, я закрыл окно правки по кнопке ОК, и вот тут началась аномалия.
CourseLab, КурсЛаб, Websoft, Алексей Корольков
Мне нужно было этот объект продублировать ещё несколько раз. Но всё, «КурсЛаб» перестал копировать и вставлять объекты, никак не оповещая меня о возникшей проблеме. Тогда я решил пойти по привычному пути — перезапустить программу. И вот после перезапуска редактор и встретил меня той ошибкой, которая приведена в начале этой статьи. Благо в памяти остались знания из прошлого, в каком месте надо править. И вот, чтобы в следующий раз не копаться в омуте памяти, я решил зафиксировать этот лайфак на страницах lifel.ru.

В целом на окне ошибки практически всё сказано, что надо сделать.
CourseLab, КурсЛаб, Websoft, Алексей Корольков
В данном случае это:

  • открыть нужный файл модуля
  • найти строку 3425
  • перейти в найденной строке на позицию 72 (вправо)
  • удалить непечатный символ

Проблема лишь в том, что на окне ошибки не указан тот самый «нужный» файл. Но по прежнему опыту я уже знал, что это файл 1.xml, а находится он непосредственно в папке модуля проекта. А в «КурсЛабе» модулей может быть несколько, о чем я напоминал в статье про октрытие внешних файлов по своей кнопке. Для одномодульного курса этот файл лежит в папке «1».
CourseLab, КурсЛаб, Websoft, Алексей Корольков
Следующий порядок действий:

  • октрыть файл «1.xml» каким-нибудь редактором кодов (Sublime Text, Notepad++, VS и т. п.);
  • найти в нём по «координатам», указанным на ошибке, непечатный символ;
  • удалить этот символ;
  • сохранить файл «1.xml»;
  • открыть проект с почищенным кодом;
  • продолжить работу в проекте.

В моём случае на указанной позиции был вот такой символ:
CourseLab, КурсЛаб, Websoft, Алексей Корольков
Этот символ, видимо, случайно вклинился в имя идентификатора, когда я добавлял пропущенное нижнее подчеркивание.

Что касается конкретно этого символа 0x1f, то это разделитель полей (Unit Separator), который относится к управляющим символам — таким символам в кодировке, которым не приписано графическое представление. Он архаичным способом разделяет поля в тексте (например запятой, или «табом» в CSV). Это не действительный текстовый символ в XML 1.0 (но разрешенный в XML 1.1).

Посмотрев на первую строку файла «1.xml», я убедился, что в «CourseLab 3.2 (200 726)» имею дело с XML именно версии 1.0, который не понимает символ 0x1f.
CourseLab, КурсЛаб, Websoft, Алексей Корольков
После удаления этого символа проект открылся без проблем. Оставляю эту рекомендацию здесь, чтобы и самому напоминать, и может вам в работе пригодится.
Понравилась статья? Нажми на Лайфика!
статьи по теме