On Thu, 3 Jun 2010, Michael Peppler wrote:

Which version of Sybase, which version of Sybase OpenClient, and which version 
of DBD::Sybase?

Ah, I was using the old libs (11.0), which may have been the problem. I was also using DBD::Sybase 1.07.

I switch to Sybase 15.0 (OCS 15.0 if that makes sense), OpenClient 15.0 libs, and DBD::Sybase 1.10.

Now it's closer to working. If I set "charset=utf8" in the dsn, I get

 2010/06/03 14:08:11 unicode CRITICAL: FATAL: DBD::Sybase::db do failed: Server 
message number=2402 severity=16 state=1 line=1 server=HDATADEV1 text=Error 
converting characters into server's character set. Some character(s) could not 
be converted.

I'm not sure what that means.

If I _don't_ set that, the data goes in and comes out as bytes, rather than the bizarro hex string. However, the data does have the utf8 flag set when it comes back from Sybase, so I have to run it through Encode::decode.

I really don't think I can realistically tell the bazillion developers here "just run all the data through Encode".

I'd really like see an end-to-end solution.

Also, it's not clear to me that the data is actually being stored as characters at the Sybase level. I'm not even sure how I'd figure this out. When I do a select from sqsh, I see the wacky hex string, but I can't tell if that's Sybase trying to present data to me in a format it thinks my environment can handle.

I did try setting LC_ALL=us_english.utf8 when running sqsh, but that didn't make a difference.

Basically, what I need is to be able to take Perl native unicode strings, store them in Sybase in Sybase's native format (utf16, I believe), and then retrieve them as Perl native unicode strings again.


-dave

/*============================================================
http://VegGuide.org               http://blog.urth.org
Your guide to all that's veg      House Absolute(ly Pointless)
============================================================*/

Reply via email to