Riateche
@Riateche

Mercurial портит русскую букву "Р" в файлах

Используем для совместной работы в проекте mercurial. Среда разработки — Qt Creator (хотя, по-моему, это не важно). Файлы в кодировке UTF-8. Периодически оказывается, что в некоторых файлах все вхождения русской буквы «Р» (байты D0 A0) заменяются на неправильный набор байтов D0 20. Воспроизвести последовательность действий, приводящих к проблеме, пока не получилось, проблема появляется всегда внезапно. Разработчики используют mercurial из разных ОС (Windows XP, Windows 7, Debian). Доступ к репозиторию на сервере осуществляется по ssh с авторизацией по ключам. Подозреваю, что проблема может быть в какой-то одной из версий mercurial. Как бороться с этой проблемой?

Upd. Проблема оказалась в Qt Creator. Если в нем делать замену текста по всему проекту, то он портит букву в файлах, которые не были открыты в момент замены. Буду изучать, почему он так делает.
  • Вопрос задан
  • 2752 просмотра
Пригласить эксперта
Ответы на вопрос 1
Информации маловато, неясно, где конкретно происходит замена: в локальных файлах, в удалённых файлах, в репозитории? Если в репозитории, то смотрим, чей коммит, и уже с его конкретной машиной разбираемся.

Общее направление для исследования: A0 — это неразрывный пробел, и некоторые приложения, связанные с обработкой текста, превращают его в обычный пробел. Скорее всего, какая-то из промежуточных программ, участвующих в цепочке пересылки данных, трактует текст как ANSI, поэтому и обрабатывает A0 как независимый символ, а не как часть UTF-8-последовательности. Соответственно, нужно смотреть, какие программы участвуют в процессе пересылки, и пытаться отслеживать содержимое текста на входах и выходах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы