Собственно делал все по следующей схеме, непомню кто, но кто-то на opennet.ru писал. У меня все заработало, единственно не дошел до експорта в pdf
Для корректного импорта кириллицы из OCS Inventory в GLPI требуются следующие телодвижения:
1. Таблицы в базе OCS Inventory должны быть созданы с DEFAULT CHARSET=utf8, за исключением таблицы FILES, она создается с DEFAULT CHARSET=latin1
2. OCS для импорта XML использует модуль XML:Parser, этот модуль по умолчанию не понимает кодировку Windows-1251 (в которой шлет отчет виндовый агент)
требуется добавить ему поддержку кириллицы (файлы кодировок брать тут:
http://uucode.com/xml/perl/#enc 3. Собранный авторами OCS Agent для винды формирует XML отчет в дефолтовой кодировке системы, но в заголовке ставит encoding="ISO-8859-1" для исправления глюка пропатчил OCSInventory.exe, единственное вхождение encoding="ISO-8859-1" заменил на encoding="Windows-1251". Придется пересобрать инсталятор, исходники качаем с официального CVS, собирается NSISом.
после этих телодвижений, в базу OCS данные должны попадать уже в нормальном виде!
4. Патчим OCS, файл preferences.php
меняем параметр:
-define("UTF8_DEGREE", 0 ); // 0 For non utf8 database, 1 for utf8
+define("UTF8_DEGREE", 1 ); // 0 For non utf8 database, 1 for utf8
function textDecode - должна принят следующий вид:
function textDecode( $txt ) {
global $l;
for( $i=0; $i<UTF8_DEGREE; $i++ ) {
$txt = iconv("UTF-8", $l->g(0), $txt );
}
return $txt;
}
5. Патчим GLPI, файл / inc/ocsng.class.php
if ($CFG_GLPI["ocs_mode"]) {
$data = getOcsConf($ID);
$this->dbhost = $data["ocs_db_host"];
$this->dbuser = $data["ocs_db_user"];
$this->dbpassword = rawurldecode($data["ocs_db_passwd"]);
$this->dbdefault = $data["ocs_db_name"];
$this->dbenc="latin1";
$this->DBmysql();
}
меняем кодировку latin1 на utf8
Тестируем, кириллица должна быть нормально видна и в OCS и после импорта в GLPI !!!
Продолжаем русификацию ...
Для того что бы из GLPI можно было корректно выгружать данные в PDF
патчим inc/export.function.php:
добавляем функу
function utf8_decode_cyr($value){
return iconv("UTF-8","Windows-1251",$value);
}
и правим все вызовы utf8_decode() на utf8_decode_cyr()
стандартная utf8_decode() может декодировать только в ISO-8859-1 !!!
плюс надо заменить шрифт в lib/ezpdf/fonts/
на тот что приложен в аттаче
Собственно сам исправленый агент __http:// depositfiles . com/files/wtxlo9ell
И шрифты для PDF _http:// depositfiles . com/files/7rsv4jbzk