파일에 줄을 인쇄 할 때 perl 형식을 사용합니다.perl 형식 및 utf 데이터의 문제
즉.
format REPORT1 =
@<<<<<<<< @<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>> @>>>>> @>>>>> @>>>>> @>>>>>
$write_student_number, $write_serial, $write_name, $write_attempted, $write_correct, $write_score, $write_percent_correct, $write_percent_score
~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$write_name
-----------------------------------------------------------------------------------------------------------------------------
.
나는 uft8 문자 세트를 사용하는 Oracle 데이터베이스에서 $ write_name을 검색합니다.
이 데이터는 수유 데이터베이스를 uft8로 변환 할 때까지 잘 작동합니다. 나는 그것이로 사용 모르겠어요,하지만 형식은 지금과 같은 라인을 제공 UTF 8
아니었다합니다 (< < 통지 >>와 @의)
009999990 000000133 Anderson, Charlie 30 25 25 83.3 83.3
-----------------------------------------------------------------------------------------------------------------------------
009999951 000000132 Smith, Josée 29>> 21 @>>> 21>>> 70.0 @>> 70.0
,
-----------------------------------------------------------------------------------------------------------------------------
009999934 000000131<<Quiring, Randy << [email protected]>>>>> 12 12 @>> 40.0>
대신
009999990 000000133 Anderson, Charlie 30 25 25 83.3 83.3
-----------------------------------------------------------------------------------------------------------------------------
009999951 000000132 Smith, Josée 29 21 21 70.0 70.0
-----------------------------------------------------------------------------------------------------------------------------
009999934 000000131 Quiring, Randy 30 12 12 40.0
웹상에서 발견 된 여러 가지 솔루션을 사용해 보았지만 아무 것도 효과가 없었습니다.
binmode STDOUT, ":utf8";
use open qw(:std :encoding(UTF-8));
use Encode;
use Encode 'is_utf8';
$first_name = decode_utf8($first_name);
는 또한
use Encode 'from_to';
from_to($write_name, "utf-8", "iso-8859-1");
open my $fh, ">:utf8", $filename
or die "could not open $filename: $!\n";
및
from_to($write_name, "utf-8", "WINDOWS-1252");
을 시도하는 작품의 종류, 그냥
?
의와 UTF 문자를 대체합니다 제외.
문자열을 파일로 출력 한 다음 문자열을 파일로 다시 읽고 변수에 다시 저장하면 해결 방법이 발견됩니다.
형식은 Windows 환경에서 작동합니다. 이 문제는 유닉스에서만 발생합니다.
더 나은 해결책이 있기를 바랍니다.
적용되지 않을 수도있는 몇 가지 사항을 게시했습니다. 일부 혼란을 피하는 것이 좋습니다. 그러나 실제로 더 많이보고 싶습니다. 데이터를 데이터베이스에 저장하는 방법과 데이터를 가져 오는 방법이 문제 일 가능성이 큽니다. UTF-8은 멀티 바이트 문자가있을 수있는 바이트 문자열입니다. 멀티 바이트 부분의 인코딩을 맹 글링해야합니다 (선두 문자 또는 멀티 바이트 문자 다음의 일부). – zanlok
Oracle에서 반환 한 데이터의 UTF-8 플래그가 켜져 있습니까? 아니면 꺼져 있습니까? 출력 스트림을 명시 적으로'binmode' 했습니까? – tchrist