Кракозябры — это классическая проблема с кодировками: текст был сохранён в одних байтах (в одной кодировке), а при отображении эти байты интерпретируют как символы другой кодировки. В результате вместо русских букв вы видите «ÐŸÑ€…», «РџСЂРёРІРµС‚» или что‑то похожее.
Почему это может происходить в Proxmox:
- Веб‑интерфейс (браузер) и сервис Proxmox ожидают/отправляют UTF‑8, а конфигурационные файлы или окружение хоста настроены на другую кодировку (например, CP1251 или ISO‑8859‑1).
- Система (локаль на сервере) не использует UTF‑8, и при сохранении заметки байты конвертируются неправильно.
- Текст был как‑то «дважды перекодирован» (UTF‑8 байты были интерпретированы как Latin1/CP1252 и затем снова сохранены).
- Маловероятно, но: прокси/реврс‑прокси или старый браузер меняет заголовки charset.
Как диагностировать быстро
1. Подключитесь к серверу Proxmox по SSH и посмотрите локаль:
locale
Флаги LANG/LC_* должны содержать UTF‑8 (например ru_RU.UTF-8 или en_US.UTF-8).
2. Посмотрите, где хранятся задания резервного копирования (обычно конфиги Proxmox находятся в /etc/pve, резервные задания могут быть в /etc/pve/vzdump.cron или похожем файле) и проверьте сырые байты:
hexdump -C /etc/pve/vzdump.cron | less
или
file -i /etc/pve/vzdump.cron
(это покажет кодировку/тип файла, если удастся определить).
3. В браузере: откройте DevTools -> Network -> ответ страницы с заметкой и посмотрите заголовок Content-Type — должен содержать charset=UTF-8.
Как исправить (порядок действий)
1. Настройте локаль сервера на UTF‑8 (если она не UTF‑8):
dpkg-reconfigure locales
и выберите ru_RU.UTF-8 (или нужную вам) как системную локаль,
либо отредактируйте /etc/default/locale и установите LANG="ru_RU.UTF-8".
После этого перезапустите сервисы Proxmox:
systemctl restart pveproxy pvedaemon
2. Если проблема в уже сохранённых (искажённых) заметках — их нужно перекодировать. Сначала сделайте резервную копию файла:
cp /etc/pve/vzdump.cron /root/vzdump.cron.bak
Варианты восстановления (в зависимости от того, как именно было искажено):
- Если файл на самом деле в CP1251 (Windows‑1251), а нужен UTF‑8:
iconv -f CP1251 -t UTF-8 /root/vzdump.cron.bak > /etc/pve/vzdump.cron
- Если вы видите типичный «ÐŸÑ€Ð¸Ð²ÐµÑ‚» (UTF‑8 байты были ошибочно интерпретированы как Latin1 и записаны снова), можно восстановить так:
python3 - <<'PY'
b = open('/root/vzdump.cron.bak','rb').read()
open('/etc/pve/vzdump.cron','wb').write(b.decode('latin-1').encode('utf-8'))
PY
После изменения перезапустите pveproxy/pvedaemon:
systemctl restart pveproxy pvedaemon
3. Проверьте в веб‑интерфейсе: отредактируйте/создайте новую заметку с русским текстом и снова откройте её — если всё в порядке, проблема решена.
Дополнительно
- Можно установить enca (apt install enca) и попытаться автоопределить кодировку: enca -L ru файл
- Всегда делайте резервную копию файлов перед перекодировкой.
- Если хотите, пришлите пример точного искажённого текста (строку как она отображается) — по ней можно точнее сказать, какой сценарий (CP1251→UTF‑8 или UTF‑8→Latin1→UTF‑8 и т. п.) и дать точную команду для восстановления.
Кратко: вероятнее всего проблема с локалью/кодировкой на сервере — приведите её в UTF‑8 и перекодируйте/восстановите уже сохранённые файлы с помощью iconv или небольшого Python‑скрипта.