2010-02-04 6 views
1

"내 $ 열 '| - : 인코딩 (utf-8)', qw (열);"에서 "| - : 인코딩 (utf- 승인? 거의 작동하는 것 같습니다. "Mikołaj"가있는 행에서 서식이 올바르지 않습니다. 어떻게 해결할 수 있습니까?Perl 파이프에서 인코딩을 설정하려면 어떻게해야합니까?

#!/usr/bin/perl 
use warnings; 
use strict; 
use utf8; 
binmode STDOUT, ':encoding(utf-8)'; 
# edit: 
binmode DATA, ':encoding(utf-8)'; 

open my $column, '|-:encoding(utf-8)', qw(column); 
print $column "$_\n" for <DATA>; 

__DATA__ 
Julius 
Giovanni 
George 
Alonso 
Jerome 
Eugène 
Reinhold 
Gustav 
Pavel 
Franz 
Max 
Mikołaj 
Maurice 
Alec 
Émile 
Xaver 
Henry 
Wolfgang 
Alexander 
Enrico 
Bedrich 
Joaquín 
Bartholomäus 
Otto 
Carl 
Isaak 
Anatol 
Leos 
Herbert 
Paul 
Benjamin 
Matthew 
Jean 
+0

DATA의 인코딩은 어디에서 설정 했습니까? 일반적으로 들어오는 데이터를 명시 적으로 디코딩하고 암시 적으로 작동하는 것에 의존하기보다는 나가는 데이터를 명시 적으로 인코딩하는 것이 좋습니다. – jrockway

+0

"binmode DATA, ': 인코딩 (utf-8)';"을 추가하려고했습니다. 하지만 "Mikołaj"로 포맷 문제를 해결하지 못했습니다. –

+0

Linux에서 Perl 5.8.8이 작동합니다. 스크립트 및 시스템에 대한 자세한 내용은? – ephemient

답변

2

서식을 지정하고 정렬 된 출력이 필요한 경우가 있습니다. 나는 ł가 라틴어 1에서 발생하지 않는 표본의 유일한 성격임을 알아 차렸다. 어리석은 글꼴을 가지고있는 문제를 배제하기 위해, 광범위한 적용 범위를 가진 잘 동작하는 것을 표시하도록 터미널을 설정하십시오 : DejaVu Sans Mono이 좋습니다.

또한 출력을 헥스 덤프 했습니까? 이것은 내가 얻은 것입니다 :

0000 4d 69 6b 6f c5 82 61 6a 0a      Miko..aj . 
+0

Thx, 폰트를 바꿨다. 이제는 잘 동작한다. –

1

이 예제 스크립트는 나를 위해 BSD/OSX에서 올바르게 작동합니다. 일반적으로 형식 지정에 문제가있을 때 인코딩 불일치가 발생합니다. (당신이 사용하는 어떤 텍스트 편집기 확인)

  • 터미널은 UTF8
  • (올바르게 나타납니다 터미널에서 파일을 볼)을 처리하는 파일이 UTF8 형식으로 저장되고

    • 을 : 확인
    +0

    텍스트 편집기와 터미널이 utf-8로 설정되어 있습니다. –

    관련 문제