2010-11-24 25 views
0

私はperlモジュールsapnwrfcを使用してSAPに接続し、レポートを取得しています。このモジュールはutf8を使用し、データが返されたときにはデータの一部にutf8文字の破損のパターンがあります。これは、SAPレポートの行の長さが4096を超え、現在の考えでは、perlの読み取りバッファがutf8文字を分割して破損していると考えられます。perl utf8破損

$abap_lookup = $sap_rfc->function_lookup("REPORT"); 
$abap_program = $abap_lookup->create_function_call; 

# set abap program input variables 
$abap_program->REPORT($abap_program_name); 
$abap_program->VARIANT($abap_variant_name); 

# call the abap program 
$abap_program->invoke; 

$ abap_program-> DATAはこれが破損してフラグメントである4Kbの

以上で各行に一つの場所で破損を持って、実際のラインはバイトまたは4Kbのよりも2以上です。

\x{f8fc}\x{2500}  \x{500}/\x{f8fc}\x{2500} 

これが期待されているものですので、私は何かがラインを分割して、問題を引き起こしていると仮定しています。

\x{f8fc}\x{2500}\x{f8fc}\x{2500}\x{f8fc}\x{2500} 

私はオープンのすべての方法を試してみました ':UTF8' プラグマおよびその他の設定(使用UTF8、binmodeを(STDIN、 ":UTF8")、のbinmode(STDOUT、 ":UTF8を");)。また、バッファリングをオフにしようとしました($ | = 1;)。私はこれがutf8の問題かバッファリングの問題かどうかは分かりません。なぜこれがこれを行うのか、そしてそれを修正する方法を知っていますか?

+0

どのバージョンのPerlですか? –

+0

それはperlです5.12.2 –

+0

おっと!これは現在の状況に近いものです... Perl 5.6.1や5.8.2など、UTF8のサポートがよく知られているような古風なことがよくあります。 –

答えて

0

は、破損がどこで起きているのか把握できませんでしたが、繰り返し可能なのでフィルタを作成しました。