Проблема при загрузке пользователей из файла csv

Проблема при загрузке пользователей из файла csv

от Людмила Татарникова -
Количество ответов: 12

Добрый день, уважаемые коллеги!

Столкнулась с такой проблемой: в Moodle 2.6 при загрузке пользователей из csv-файла (кодировка UTF-8)  не распознаются символы кириллицы (имя, фамилия, город...) - вместо них пустота. Соответственно, система выдаёт ошибку "пустое имя". 

При этом если в тексте встречается некириллический символ (например, точка или _), то и он, и вся кириллица после него видны. Вот так выглядит таблица предпросмотра загружаемых записей (фамилия видна, потому что начинается с точки):

А вот так выглядит таблица в Moodle 2.3 (загрузка из того же файла):

Экспериментировала с различными кодировками (собственно до "точки" и докопалась).

Может, кто-то сталкивался с такой проблемой? Куда копать?

Спасибо

В ответ на Людмила Татарникова

Re: Проблема при загрузке пользователей из файла csv

от Vadim Tabunshchik -
Изображение пользователя Developers

Людмила, точно с такой же проблемой сталкивался Yuriy Antonovich, только эта тема исчезла с сайта после ноябрьского сбоя. Была тут: Russian » Форумы » Общий форум » Кириллические символы при загрузке пользователей

Спросите у Юрия в личке, решил ли он проблему.

ЗЫ: csv-файл прикрепите, проверю у себя.

В ответ на Vadim Tabunshchik

Re: Проблема при загрузке пользователей из файла csv

от Людмила Татарникова -

Спасибо, Вадим, за совет!

ЛС отправила, но в профиле написано, что Юрий Антонович не был на форуме больше 2 лет грущу

Файлик прикрепила, буду очень благодарна за проверку улыбаюсь

В ответ на Людмила Татарникова

Re: Проблема при загрузке пользователей из файла csv

от Vadim Tabunshchik -
Изображение пользователя Developers

Юрий Антонович не был на форуме больше 2 лет

Был, его тема пропала после сбоя на сайте moodle.org в ноябре 2013. Вот начало топика:

Изображение пользователя Yuriy Antonovich
Кириллические символы при загрузке пользователей
от Yuriy Antonovich - Среда, 23 Октябрь 2013, 15:05
 

Доброго дня.

Вопрос наглядно представлен на рисунках. Загрузка файла, представленного на рис.1 (Блок "Настройки" - Администрирование - Пользователи - Учётные записи - Загрузить пользователей) приводит к результатам, представленным на рис.2. Кириллические символы в примере отображаются только после цифры. В чём может быть проблема загрузки ФИО?

Прим.: замечено после поэтапного обновления Moodle с версии 1.9 до версии 2.5.2+ (Build: 20131011). В версии 1.9 пользователи загружались нормально.

С файлом всё в порядке, в версии 2.6.1 пользователь загружается без ошибок. Отладка на сайте включена на "Разработчик…"? Ошибок никаких не выводит?

Проверьте загрузку тестовых вопросов с кириллицей, терминов глоссария из файла XML, может проблема с кодировкой БД, и кириллица нигде не работает. Пока на ум больше ничего не приходит грущу

В ответ на Vadim Tabunshchik

Re: Проблема при загрузке пользователей из файла csv

от Людмила Татарникова -

Отладку включила. Если на "ВСЕ", то при загрузке пользователей никаких сообщений об ошибках не выдаёт (зато обнаружила ошибку в другом месте улыбаюсь), если на "РАЗРАБОТЧИК", то выводит десяток строк, вроде как не фатальных (чего бы я в них понимала )), но error-то нет):

The block ajax_marking does not define the standard capability block/ajax_marking:addinstance

  • line 617 of /blocks/moodleblock.class.php: call to debugging()
  • line 595 of /blocks/moodleblock.class.php: call to block_base->has_add_block_capability()
  • line 1118 of /lib/blocklib.php: call to block_base->user_can_addto()
  • line 1098 of /lib/blocklib.php: call to block_manager->user_can_delete_block()
  • line 256 of /blocks/moodleblock.class.php: call to block_manager->edit_controls()
  • line 956 of /lib/blocklib.php: call to block_base->get_content_for_output()
  • line 1008 of /lib/blocklib.php: call to block_manager->create_block_contents()
  • line 361 of /lib/outputrenderers.php: call to block_manager->ensure_content_created()
  • line 37 of /theme/essential/layout/columns2.php: call to core_renderer->standard_head_html()
  • line 866 of /lib/outputrenderers.php: call to include()
  • line 796 of /lib/outputrenderers.php: call to core_renderer->render_page_layout()
  • line 1093 of /admin/tool/uploaduser/index.php: call to core_renderer->header()

В глоссарий данные из xml-файла загружаются корректно.

Надо, однако, пробовать обновление (до сих пор боялась). А "минорное" обновление происходит так же, как и "мажорное"? То есть надо всё удалить из каталога, кроме config.php, предварительно сохранив всё и вся, и т.д.? Или есть возможность обновиться с 2.6 до 2.6.1 автоматом?

В ответ на Людмила Татарникова

Re: Проблема при загрузке пользователей из файла csv

от Vadim Tabunshchik -
Изображение пользователя Developers

Эта ошибка не критична, версия блока ajax_marking не соответствует требованиям версии moodle 2.6 (в файле /blocks/ajax_marking/db/access.php не указано разрешение standard capability block/ajax_marking:addinstance). Но, в вашем случае, т. к. в moodle что-то не работает (или работает неправильно), я бы его удалил и попробовал загрузить пользователей снова.

То есть надо всё удалить из каталога, кроме config.php, предварительно сохранив всё и вся, и т.д.?

Именно. "Автоматом" (через админку) можно обновлять только плагины.

В ответ на Vadim Tabunshchik

Re: Проблема при загрузке пользователей из файла csv

от Людмила Татарникова -

Все "подозрительные" блоки полностью удалила, но проблему это не решило. Вадим, большое спасибо за терпение и помощь. 

Проблема пока остаётся открытой, началась сессия у дистантников и экспериментировать пока некогда. Если что-то решится или появятся новые идеи, обязательно сюда напишу.

Всем плодотворной работы и с прошедшим праздником улыбаюсь

В ответ на Людмила Татарникова

Re: Проблема при загрузке пользователей из файла csv

от Андрей Фоменко -

Проблема решена.

Людмила, для  работы используйте LibreOffice. Несколько вариантов:

  • можно разрабатывать таблицы в Excel, сохранить, потом открыть в LibreCalc и сохранить в csv в кодировке utf-8,
  • можно сразу в LibreCalc и сохранить в csv в кодировке utf-8
Результат одинаковый - сохраняет все кириллические символы
В ответ на Андрей Фоменко

Re: Проблема при загрузке пользователей из файла csv

от Людмила Татарникова -

Андрей, спасибо за совет!

Кодировку я меняла в Notepad++, но это не помогало. А потом сменили хостинг - и всё наладилось

В ответ на Андрей Фоменко

Re: Проблема при загрузке пользователей из файла csv

от Alexandre Scherbyna -

Moodle позволяет вводить CSV-файлы в самых разных кодировках, не только в UTF-8. Нужно только правдиво указать разделители и кодировку, которую вы используете. Наш Excel создает CSV-файлы в кодировке Windows 1251 с разделителем ";" (хотя, тип файла, который мы выбираем при сохранении файла в Excel,  называется CSV, разделители запятые). Поэтому я создаю файл в Excel и сразу импортирую его в Moodle. Ничего не конвертирую.

В ответ на Alexandre Scherbyna

Re: Проблема при загрузке пользователей из файла csv

от Alexey Piguzov -

Я тоже в Libre Office делаю в Calc. Там при сохранении нужно поставить галочку "Изменение настроек фильтра" внизу окна сохранения, ну и выбрать формат CSV. Тогда откроется дополнительное окно где можно и кодировку задать и разделитель любой выбрать.

В ответ на Людмила Татарникова

Re: Проблема при загрузке пользователей из файла csv

от Людмила Татарникова -

Добрый день!

Сообщаю о результатах. Получила ответ от Юрия Антоновича, пишет, что полностью проблему так и не решили, нашли два временных решения: точка в имени и прямой доступ к БД. Однако, с переносом ресурсов на другой сервер проблема перестала быть.

На своём сайте обнаружила подобный же баг и с загрузкой записей в модуль "База данных" из файла csv, решала её взятием в кавычки всех значений (результат более приемлемый, поскольку кавычки системой просто отбрасывались, и в базе не было никаких посторонних символов). Вчера перенесли сайт на другой сервер - и теперь все пользователи загружаются корректно (убрать бы теперь точки у старых пользователей))).

Спасибо всем за участие!

В ответ на Людмила Татарникова

Re: Проблема при загрузке пользователей из файла csv

от Vadim Tabunshchik -
Изображение пользователя Developers
решала её взятием в кавычки всех значений (результат более приемлемый, поскольку кавычки системой просто отбрасывались, и в базе не было никаких посторонних символов). Вчера перенесли сайт на другой сервер - и теперь все пользователи загружаются корректно (убрать бы теперь точки у старых пользователей)

Имхо, при просмотре сообщений топика понял, что проблема с загрузкой csv была у всех в настройках ПО сервера.

Точки в lastname можно убрать у всех сразу прямым SQL-запросом к БД (надеюсь, точки только в одном месте в фамилии?):

UPDATE mdl_user u SET u.lastname = REPLACE(u.lastname, '.', '')