Доброй ночи.
Извечная проблема совместимоти кодировок Win и *Nix снова напомнила о себе :)
Есть сервачок с системой резервного бэкапа на Bacula. Настроено на FreeBSD 8.1 с адаптированной под винду консолью (кодировка Cp1251).
Консольный вариант Bacula отлично выполняет свои функции, в том числе и с опознованием русских имён/путей файлов.Для удобства установил Webacula, а заодно и Bat. С этими примочками вышла аказия: на веб-интерфейсе, при отображении списка бекапных файлов, где должны быть кириллические имена -отображаются пустые строки, а в Bat вопросики.
Начал думать в сторону MySQL т.к. данные подтягиваются из БД.
Стоит отметить, что SELECT выдает корректные данные с названием папок на кириллице:
mysql> use bacula
mysql> select * from Path;
| 16 | /usr/home/user/Чтение PDF и DJVU/Электронная библиотека/
В нете нашел информацию, что корректное отображение в консоли не гарантирует качество конечного результата. Сделал запрос с указанием Collation:
mysql>  select * from Path order by Path collate cp1251_general_ci;
ERROR 1253 (42000): COLLATION 'cp1251_general_ci' is not valid for CHARACTER SET 'binary'
Однако, перед тем как делать такой запрос, подготовился:
БД была создана с такими параметрами:
CREATE DATABASE ${db_name} CHARACTER SET cp1251 COLLATE cp1251_general_ci;
Таблица с такими параметрами:
CREATE TABLE Path
   (
   PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
   Path BLOB NOT NULL,
   PRIMARY KEY(PathId),
   INDEX (Path(255))
   )
   CHARACTER SET cp1251 COLLATE cp1251_general_ci;
   
Да и параметры my.cnf тоже были изменены, результат этих изменений вот:
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | cp1251                           |
| character_set_connection | cp1251                           |
| character_set_database   | cp1251                           |
| character_set_filesystem | cp1251                           |
| character_set_results    | cp1251                           |
| character_set_server     | cp1251                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | cp1251_general_ci |
| collation_database   | cp1251_general_ci |
| collation_server     | cp1251_general_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
Откуда мог взяться в нашей таблице CHARACTER SET 'binary' не могу понять...