|
|
sybperl-l Archive
Up Prev Next
From: Michael Peppler <mpeppler at peppler dot org>
Subject: Re: iso_1 and unicode
Date: Mar 11 2003 5:14PM
On Mon, 2003-03-10 at 06:45, Stephen.Sprague@morganstanley.com wrote:
> Hi Michael-
> Yes and no.
>
> Turned out I had a different problem. As I finally learned Sybase::CTLib
> returns data from a image column as a hex *char* string (not true binary
> - and same goes for varbinary) so when I was taking this char string and
> spooning it back in the text field on the other server, of course, it
> underwent another tranformation. The Rx? I inserted an unpack statement
> to decode it to binary after retrieving it and before using it in the
> blk_xfer and everything's fine now. I'm only wondering if there isn't
> some option to turn of this hex char string transformation off from the
> perl API from the start.
I'll have to check this - I know that for regular SELECTs I originally
converted both CS_TEXT_TYPE and CS_IMAGE_TYPE to CS_TEXT_TYPE, with that
same result. There may be something that can be done with the BLK API to
avoid the conversion to hex.
> As to the below, I'm still curious why the call to ct_con_props returned
> a "0" even though I set it to utf8 -- but it's not critical in any way
> shape or form.
I'll look into this.
Michael
> On 7 Mar 2003 @ 10:30am, an entity claiming to be Michael Peppler scribbled:
>
> mpeppl :I'm sorry for the delay - did you ever get an answer to this issue?
> mpeppl :
> mpeppl :Michael
> mpeppl :
> mpeppl :On Sat, 2003-02-15 at 06:45, Stephen.Sprague@morganstanley.com wrote:
> mpeppl :
> mpeppl :> Hi
> mpeppl :> I'm having a little trouble trying to mimic the -J switch on sybase's
> mpeppl :> bcp command via Sybase::CTlib. I'm trying to pull a text field from an
> mpeppl :> iso_1 server, convert it to unicode, and put it in a utf8 server.
> mpeppl :>
> mpeppl :> sybase docs tell me this:
> mpeppl :> run bcp "out" with the -Jutf8 switch (on the iso_1 server) and ensure
> mpeppl :> sp_configure "enable unicode conversions", 2 is set. then bcp
> mpeppl :> "in" the file to the utf8 server.
> mpeppl :>
> mpeppl :> (sounds easy enough)
> mpeppl :>
> mpeppl :>
> mpeppl :> now, i'd like to use perl to do this...
> mpeppl :>
> mpeppl :> I infer this from the Sybase::CTlib (v2.15):
> mpeppl :>
> mpeppl :> use CS_SYB_CHARSET when connecting to the iso_1 server.
> mpeppl :> ie.
> mpeppl :>
> mpeppl :> my $dbh Sybase::CTlib->new($user, $pwd, $server, $pname, \
> mpeppl :> { CON_PROPS => {CS_SYB_CHARSET =>'utf8'} });
> mpeppl :>
> mpeppl :>
> mpeppl :> #now I figured I could get the property that indicated if conversion
> mpeppl :> #was taking place if I select from this connection
> mpeppl :> my $val;
> mpeppl :> my $rc = $dbh->ct_con_props(CS_GET, CS_CHARSETCNV, $val, CS_INT_TYPE);
> mpeppl :> if($rc == CS_SUCCEED) {
> mpeppl :> print "val=$val\n";
> mpeppl :> } else {
> mpeppl :> print "ct_con_props failed\n";
> mpeppl :> }
> mpeppl :>
> mpeppl :> However, $val prints 0 in this case. I wouldn't expect that since unicode
> mpeppl :> conversion is indeed set on the server.
> mpeppl :>
> mpeppl :> Has anyone else been down this path?
> mpeppl :>
> mpeppl :> Thanks,
> mpeppl :> Steve
> mpeppl :
--
Michael Peppler Data Migrations, Inc.
mpeppler@peppler.org http://www.mbay.net/~mpeppler
Sybase T-SQL/OpenClient/OpenServer/C/Perl developer available for short or
long term contract positions - http://www.mbay.net/~mpeppler/resume.html
|