2010-06-14 2 views
2

저는 영국으로 확대되는 응용 프로그램을 가지고 있으며 Latin-9 유니 코드에 대한 지원을 추가해야합니다. 나는 Googling을 해봤지만 그 과정에 무엇이 포함되어 있는지에 관해서는 아무 것도 발견하지 못했다. 어떤 팁? 여기 Perl latin-9? 유니 코드 - 지원을 추가해야합니다.

는 일부 코드 (유니 코드 물건에 대한 그냥 비트)

use Unicode::String qw(utf8 latin1 utf16); 

# How to call 
$encoded_txt = $self->unicode_encode($item->{value}); 

# Function part 
sub unicode_encode { 

    shift() if ref($_[0]); 
    my $toencode = shift(); 
    return undef unless defined($toencode); 

    Unicode::String->stringify_as("utf8"); 
    my $unicode_str = Unicode::String->new(); 


    # encode Perl UTF-8 string into latin1 Unicode::String 
    # - currently only Basic Latin and Latin 1 Supplement 
    # are supported here due to issues with Unicode::String . 
    $unicode_str->latin1($toencode); 
    ... 

어떤 도움도 큰 감사 것입니다.

편집 : http://czyborra.com/charsets/iso8859.html

+3

왜 Latin-9를 지원해야합니까? 수신 할 데이터에 대해 특정 형식으로 특정 형식이 있습니까? 특정 문자 세트가 아닌 특정 문자를 지원해야하는 경우 유니 코드 및 UTF-8을 사용하는 것이 좋습니다. – mpeters

+0

라틴어 -9는 유로화 기호가있는 라틴어 -1과 비슷하지만 유니 코드로 이동하지 않으려는 경우 인기있는 선택입니다. – leonbloy

+0

라틴어 -9는 비즈니스 요구 사항입니다. –

답변

5

Unicode::String 고대이며, 나이가 Perls에 유니 코드 지원을 추가하도록 설계 : 는이 게시물을 발견했다. 최신 버전의 Perl (5.8.0 이상)은 고유 한 유니 코드를 지원합니다. Encode 모듈과 :encoding 레이어를 살펴보십시오. perldoc Encode::Supported을 사용하여 Perl에서 지원되는 인코딩 목록을 얻을 수 있습니다.

기본적으로 출력이 & 인 라틴어 -9로 디코딩/인코딩해야합니다. 나머지 시간에는 Perl의 기본 UTF-8 문자열을 사용해야합니다.

# Read a Latin-9 file: 
open(my $in, '<:encoding(Latin9)', 'some/file'); 
my $line = <$in>; # Automatically converts Latin9 to UTF-8 

# Write a Latin-9 file: 
open(my $out, '>:encoding(Latin9)', 'other/file'); 
print $out $line; # Automatically converts UTF-8 to Latin9 
+0

감사합니다. 내가 제공 한 참조를 살펴 봤지만 Latin-9는 보지 못했습니다. 기타 참고 문헌/조언? –

+0

이전 버전의 소프트웨어를 실행하는 클라이언트 중 일부가 새 버전의 Perl로 업그레이드하지 못할 수도 있으므로 다시 한 번 다른 문제가 있습니다. Latin-9에 대한 지원이 다음과 같이 유니 코드 :: 문자열 방식을 사용합니까? 고객이 가능한 한 쉽게 업그레이드 할 수 있도록 만들고 싶습니다. –

+0

'perldoc Encode :: Supported'를 사용해 지원되는 인코딩 목록을 얻으십시오. search.cpan.org는 현재 버전을 찾지 못하는 것 같습니다 (tarball의 다른 위치로 이동했기 때문입니다). – cjm

0

perldoc에서 Encode :: Supported는 ISO-8859-15 (!)로 언급됩니다. 여기 perldoc에서 출력이 많이 줄어 들었습니다 :

  Lang/Regions ISO/Other Std. DOS  Windows Macintosh Others 
     ---------------------------------------------------------------- 
     Latin9 [4] iso-8859-15 
     ---------------------------------------------------------------- 

     [4] Nicknamed Latin0; the Euro sign as well as French and Finnish 
      letters that are missing from 8859-1 were added. 
관련 문제