GLPIとOCS Inventory NG連携時の文字化け超暫定策
GLPIとOCS Inventory NGの連携が便利な事は分ったけれど、OCS Agentが登録したクライアント情報の日本語が化ける問題があった。
ocsinventory.exe /local /xml を実行してみたら、出力されるXMLファイルの文字コードはSJISで、XML内のencodingはISO-8859-1だった。
文字コードもencodingもUTF-8にして保存したファイルをLocal importすると、OCS Inventory NGでは文字化けするものの、GLPIでは問題なし!因みに、encodingをShift_JIS(文字コードはsjisのまま)にしてLocal importしたらInternal Server Errorを返された。
超暫定策としては
- ocsinventory.exeでxmlファイルを取得
- 文字コードとencodingをUTF-8に修正
- 拡張子をocsに変更
したファイルをLocal importすれば(GLPIでは)化けない。
暫定策としては、サーバー側のOcsinventory.pmでXML展開している辺りを修正すればいけるかもしれない。
…と思ったら、既に議論されてた(^^;
GLPI と OCS Inventory NG を使いはじめて、文字化けについて調べているうちにここに来ました。
OCS Inventory NG_1.02RC3(UNIX)を動かしていますが、Ocsinventory.pmを修正しても改善せず、超暫定対策をしようとしましたが、xmlファイルの拡張子をocsに変更してもインポートできませんでした。Agentがlocalで吐き出すocsファイルはバイナリ(圧縮?)ファイル?で、Serverでそのファイルはインポートできますが、xmlテキストファイルの拡張子をocsに変えたファイルではerrorとなります。
あとGLPIでOCSのソフトウェアの情報が連携できない(OCSのバージョンによる?)のもみなさんどうしてるんでしょう???
コメント : むーとん | 2008 11月 21 |
コメントありがとうございます。
はて?xmlファイルの拡張子をocsに変えるだけでインポートしてくれた気が…
バージョンは1.02RC2です。
1.02RC3でも確認しましたがインポートしてくれました。
ocsinventory.exe /local /xml
で、同一ディレクトリに出来る
PCName-2008-10-01-18-39-52.ocs
PCName-2008-10-01-18-39-52.xml
の内、.ocsを削除
.xmlをテキストエディタで開き
encoding=”ISO-8859-1″
を
encoding=”UTF-8″
に修正し、文字コードをUTF-8で保存。
拡張子を.xmlから.ocsへ変更。
OCS InventoryのLocal importで.ocsを選択。
コメント : シツメイシ | 2008 11月 27 |
因みに、OCS Inventoryが収集したソフトウェア情報をGLPIにインポートするには
セットアップ > 一般設定 > 制限 > OCSNGモード
OCSNGモードを有効にする “いいえ”→”はい”
セットアップ > OCSNGモード
ソフトウェア “インポート無し”→”ユニットインポート”
OCSのソフトウェア辞書を使います “はい”→”いいえ”
で読んでくれると思います。
コメント : シツメイシ | 2008 11月 27 |
コメントして頂き、ありがとうございます。
私の環境では、
元々生成される.ocsファイル:約 6Kバイト
.xmlファイル:約60Kバイト
で、前回.ocsファイルはインポートできて、xml拡張子変更.ocsファイルはできな
かったので、特別なファイルフォーマットでないとダメかとあきらめていました。
ただ、改めて今回してみると、なんと読んでくれました!!(その前に、データ
ベースを再作成したり、OCSの configをいじったりはしました)。
OCS Inventoryでその情報を見ると、ハードウェア情報は日本語になっていまし
たが、ソフトウェア情報は文字化けでした。ただ、Dictionaryのところでカテゴリを”NEW”以外に変更(GLPIにソフトウェア情報をインポートするのにカテゴリ変更
が必要とどこかに書いてあったので)するところでは、日本語になっていました。
OCS Inventoryで文字化けしていても、GLPIで問題無ければOKということで、
期待してGLPIでインポートしたところ、なんとOCS Inventoryで大丈夫だったとこ
ろも含めて日本語は全部文字化けでした(ソフトウェアも文字化けで何がなんだか
分からないですがインポートできました)。ここで文字化けするとは思っていな
かったので、かなりショックです。Mysqlの設定や、そのインターフェース部分に
問題あるのでしょうか?もうしばらく文字化け問題とつきあってみます。
コメント : むーとん | 2008 11月 28 |
文字化けの件、かなり強引ですが解決しました。
php,mysqlそれぞれ自動変換機能が文字化けの原因との情報が
多数あり、それぞれ設定ファイル(php.ini,my.conf)を修正
しましたが、解決出来ませんでした。mysqlのデータを見ると、
OCS inventoryではUTF-8で保存されているようですが、GLPIで
インポートしたあとのデータが文字化けしていました。
なのでGLPI→mysqlのインポート部分に原因があると思い、
mysqlに接続している部分、
/glpi/inc/dbmysql.class.php
$this->dbh = @mysql_connect($this->dbhost, $this->dbuser,
rawurldecode($this->dbpassword)) or $this->error = 1;
if ($this->dbh){
//@mysql_query(“SET NAMES ‘” . (isset($this->dbenc) ?
$this->dbenc : “utf8″) . “‘”,$this->dbh);
$select= mysql_select_db($this->dbdefault) or $this->error = 1;
を見つけ、どこかで「SET NAMES」は使うなと書いてあったので、上記の
通り「@mysql_query(“SET NAMES ‘”・・・」の行をコメントアウトしたとこ
ろ、文字化けが無くなりました(php.ini,my.confの変更の影響もあるかも
しれません)。恒久的にこれで良いのかは分かりませんが・・・。
シツメイシさんには、ブログに質問してしまって、ご迷惑おかけしました。
localファイルが読めなかった時点で9割あきらめてしまって、愚痴っぽく
コメントをあげてしまいましたが、シツメイシさんの環境ではできている
とのコメントをもらい、再チャレンジの意欲が湧き、解決?できました。
OCS Inventory,GLPIの日本語情報が少ない中で、とても心強かったです。
ありがとうございました。
コメント : むーとん | 2008 11月 30 |
私のサイトにも記載している(http://www.hanzou.jp/weblog/?p=649)のですが、
utf8ではなく、UTF-8のようです。
むーとんさんの5のコメントアウトの件も、utf8ではなく、UTF-8に直す事でいけます。
※正しい解決方法かは分かりません(´・ω・`)
コメント : はんぞー | 2009 8月 15 |