perl-unicode

Use of encoding/decoding and 3-param open

2007-11-13 09:15:14
I need to take utf8 strings (from an Oracle database) and write them to a file 
in a single-byte codeset (8859-1, 8859-2....).

 

I cannot get it to work at all. Test program enclosed 

Here is what I get on output:

 

vzb601b: /vzb/vzb601b/work/gleijonh/utftest $ perl tryit.pl

Name is \x{c384}stan\x{c3a5} Bruk AB\n   UTF String:Name is ì

                                                             stanì¥ Bruk AB

Name is \N{LATIN CAPITAL LETTER A WITH DIAERESIS}stan\N{LATIN SMALL LETTER A 
WITH RING ABOVE} Bruk AB  Named String: Name is Ã

                                                                                
                                              stanå Bruk AB

Open 'open (OUT1, ">", "sample1")'  returns 1

Open 'open (OUT2, ">:utf8", "sample2")'  returns 1

Open 'open (OUT3, '>:encoding(iso-8859-1)', 'sample3')'  returns undef

Name is ?stan? Bruk AB

 

(real name in string is 'Östanå Bruk AB'  (Swedish...)

 

What am I doing wrong?

 

 

 

 

 

Here is the perl -V

vzb601b: /vzb/vzb601b/work/gleijonh/utftest $ perl -V tryit.pl

Summary of my perl5 (revision 5 version 8 subversion 8) configuration:

  Platform:

    osname=solaris, osvers=2.9, archname=sun4-solaris-64

    uname='sunos magpie 5.9 generic_122300-03 sun4u sparc sunw,sun-fire-v490 '

    config_args='-de -Dprefix=/sv/app/perl/product/5.8.8_64 -Dcc=cc 
-Accflags=-fast -xarch=v9 -DPERL_USE_SAFE_PUTENV -Aldflags=-xarch=v9 
-Alddlflags=-xarch=v9 -Aprepend:libswanted=cl pthread  -Duse64bitall'

    hint=recommended, useposix=true, d_sigaction=define

    usethreads=undef use5005threads=undef useithreads=undef 
usemultiplicity=undef

    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef

    use64bitint=define use64bitall=define uselongdouble=undef

    usemymalloc=n, bincompat5005=undef

  Compiler:

    cc='cc', ccflags ='-xarch=v9 -fast -xarch=v9 -DPERL_USE_SAFE_PUTENV 
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',

    optimize='-O',

    cppflags='-xarch=v9 -fast -xarch=v9 -DPERL_USE_SAFE_PUTENV 
-I/usr/local/include'

    ccversion='Sun C 5.8 2005/10/13', gccversion='', gccosandvers=''

    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321

    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16

    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', 
lseeksize=8

    alignbytes=8, prototype=define

  Linker and Libraries:

    ld='cc', ldflags =' -xarch=v9 -xarch=v9 -L/opt/SUNWspro/prod/lib/v9 
-L/lib/sparcv9 -L/usr/lib/sparcv9 -L/usr/ccs/lib/sparcv9 -L/usr/local/lib '

    libpth=/opt/SUNWspro/prod/lib/v9 /lib/sparcv9 /usr/lib/sparcv9 
/usr/ccs/lib/sparcv9 /usr/local/lib /usr/lib /usr/ccs/lib

    libs=-lpthread -lsocket -lnsl -ldl -lm -lc

    perllibs=-lpthread -lsocket -lnsl -ldl -lm -lc

    libc=/usr/lib/sparcv9/libc.so, so=so, useshrplib=false, libperl=libperl.a

    gnulibc_version=''

  Dynamic Linking:

    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '

    cccdlflags='-KPIC', lddlflags=' -G -xarch=v9 -xarch=v9 
-L/opt/SUNWspro/prod/lib/v9 -L/lib/sparcv9 -L/usr/lib/sparcv9 
-L/usr/ccs/lib/sparcv9 -L/usr/local/lib'

 

 

Characteristics of this binary (from libperl):

  Compile-time options: PERL_MALLOC_WRAP PERL_USE_SAFE_PUTENV

                        USE_64_BIT_ALL USE_64_BIT_INT USE_LARGE_FILES

                        USE_PERLIO

  Built under solaris

  Compiled at Aug  8 2007 11:16:52

  %ENV:

    
PERL5LIB="/vzb/vzb601b/atai/rel/server/perlmod:/vzb/vzb601b/rel/server/perlmod:/vzb/vzb_app/perl/5.8.8_64/lib/5.8.8:/vzb/vzb_app/perl/5.8.8_64/lib:/vzb/vzb_app/perl/5.8.8_64/lib/site_perl/5.8.8:/vzb/vzb_app/perl/5.8.8_64/lib/site_perl"

    PERLDIR="/vzb/vzb_app/perl/5.8.8_64"

    PERLIO="utf8"

    PERL_ENCODING="utf8"

    PERL_HOME="/vzb/vzb_app/perl/5.8.8_64"

    PERL_SIGNALS="unsafe"

    PERL_UNICODE="DSAL"

  @INC:

    /vzb/vzb601b/atai/rel/server/perlmod

    /vzb/vzb601b/rel/server/perlmod

    /vzb/vzb_app/perl/5.8.8_64/lib/5.8.8/sun4-solaris-64

    /vzb/vzb_app/perl/5.8.8_64/lib/5.8.8

    /vzb/vzb_app/perl/5.8.8_64/lib/5.8.8/sun4-solaris-64

    /vzb/vzb_app/perl/5.8.8_64/lib/5.8.8

    /vzb/vzb_app/perl/5.8.8_64/lib

    /vzb/vzb_app/perl/5.8.8_64/lib/site_perl/5.8.8/sun4-solaris-64

    /vzb/vzb_app/perl/5.8.8_64/lib/site_perl/5.8.8

    /vzb/vzb_app/perl/5.8.8_64/lib/site_perl/5.8.8/sun4-solaris-64

    /vzb/vzb_app/perl/5.8.8_64/lib/site_perl/5.8.8

    /vzb/vzb_app/perl/5.8.8_64/lib/site_perl

    /sv/app/perl/product/5.8.8_64/lib/5.8.8/sun4-solaris-64

    /sv/app/perl/product/5.8.8_64/lib/5.8.8

    /sv/app/perl/product/5.8.8_64/lib/site_perl/5.8.8/sun4-solaris-64

    /sv/app/perl/product/5.8.8_64/lib/site_perl/5.8.8

    /sv/app/perl/product/5.8.8_64/lib/site_perl

Greger Leijonhufvud 
Senior Development Consultant 
IDA Business Park, Dangan 
Galway, Ireland 
* +353 (0)91 501378 
O2   +44 (0)777 0680026 
7    +353 (0)91 527351 
@   Greger(_dot_)leijonhufvud(_at_)intecbilling(_dot_)com 
<mailto:Greger(_dot_)leijonhufvud(_at_)intecbilling(_dot_)com>
This e-mail and any attachments are confidential and may also be legally 
privileged and/or copyright material of Intec Telecom Systems PLC (or its 
affiliated companies).  If you are not an intended or authorised recipient 
of this e-mail or have received it in error, please delete it immediately 
and notify the sender by e-mail. In such a case, reading, reproducing, 
printing or further dissemination of this e-mail or its contents is strictly 
prohibited and may be unlawful. 
Intec Telecom Systems PLC does not represent or warrant that an attachment 
hereto is free from computer viruses or other defects. The opinions 
expressed in this e-mail and any attachments may be those of the author and 
are not necessarily those of Intec Telecom Systems PLC.

Attachment: tryit.pl
Description: tryit.pl

<Prev in Thread] Current Thread [Next in Thread>