dポイントプレゼントキャンペーン実施中!

ASPで作成したPDFバイナリデータをOracleにBLOB型で格納して、Perlからoo4oで参照する処理を作成しております。
PerlからBLOBデータを取得することはできたのですが、ところどころコードが変わっており、PDFデータとして認識されません。
格納したPDFデータをASPでは正常に参照できているため、格納されているデータに問題はないと思っております。
なんとか情報を集めて下記コードを作成しましたが、ご指摘などありましたら、宜しくお願いいたします。また、別の方法などありましたら教えてください。

[Perlソース(主要部分抜き出し)]
#セッション作成
$objSs=Win32::OLE->new('OracleInProcServer.XOraSession');
#DB接続
$objDb=$objSs->OpenDatabase($strOraSid,$strOraIdPwd,0);
#PDFデータ取得SQL作成
$strSQL="SELECT PDF_DATA FROM PDF_DATA_WRK WHERE SID = '$strID'";
#ダイナセット取得
$objDs=$objDb->CreateDynaset($strSQL,0);
#GetChunkでPDFデータ取得
my $chunkSize=50000;
my $sPos=0;
my $wk_buf="";
my $getSize=0;
my $buf_pdf="";
do{
$wk_buf = $objDs->{Fields}->Item('PDF_DATA')->GetChunk($sPos,$chunkSize);
$getSize = length($wk_buf);
$buf_pdf .= $wk_buf;
$sPos += $getSize;
} until ($getSize < $chunkSize);
$objDs->Close();
[ここまで]

A 回答 (1件)

はずしてるかもしれませんが、


binmode(STDOUT);
が抜けているとか?

この回答への補足

取得したデータを出力するときは「binmode(STDOUT);」で
行っています。
念のため、プログラムの最初に「binmode(STDOUT);」を
入れてみましたが、結果は同じでした。
なお、バイナリエディタで確認したところ、
コードが変換されてしまう一部の例は下記になります。
・「0x86」→「0x3F」
・「0x98 0x28」→「0x3F」
・「0xE9 0x0F」→「0x3F」

「0x3F」はアスキーコードで「?」なので、文字コードが
認識できていないということだと思うのですが、
オラクルからデータを取得するときに、文字コード絡みの
設定が必要なのでしょうか?

補足日時:2008/08/18 10:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!