2010-11-24 9 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 이상의 이상이다.

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

이것은 예상되는 내용이므로 줄을 나누어서 문제를 일으키는 것으로 가정합니다.

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

나는 모든 오픈 방식으로 시도 'UTF8'프라 그마 및 기타 설정 (사용 UTF8, bin 파일 모드 (STDIN, "UTF8"), bin 파일 모드 (STDOUT, "UTF8을");). 또한 버퍼링을 해제하려고 시도했습니다 ($ | = 1;). 이것이 UTF8 문제인지 아니면 버퍼링 문제인지는 알 수 없습니다. 누구나 이것이 왜 이렇게하고 어떻게 고칠 수 있는지 알고 있습니까?

+0

어떤 버전의 Perl? –

+0

그것은 perl입니다. 5.12.2 –

+0

아야! 그것은 현재와 거의 비슷합니다 ... 자주 Perl 5.6.1 또는 5.8.2 또는 유사하게 UTF8 지원이 불확실한 것으로 알려진 것으로 밝혀졌습니다. –

답변

0

은 손상이 어디에서 발생했는지 파악할 수 없었지만 반복 가능하므로 필터를 만들었습니다.