I'm working on an i18n project, and we use Sybase (sigh).

Newer versions of Sybase have built-in support for Unicode with the univarchar (and other uni*) type.

However, it seems like DBD::Sybase doesn't have any support for this.

Specifically, if I take a Perl unicode string (utf8 flag is on) and insert it in a univarchar column, it seems to be inserted as raw bytes (or something).

What's really bizarre is that when I select the value back I get something like "0065006d00200064006100730068003a002000e200800094".

Yes, that's a literal string containing a series of 2-digit hex numbers!

I can translate this back to Perl unicode with this madness:

    my $chars = do {
        use bytes;

        join q{}, map { chr( eval '0x' . $_ ) } $fromdb =~ /(....)/g;
    };

    my $unicode = decode( 'utf8', $chars );

So the data is there, but not in a very usable form.

Has anyone researched or solved this problem?

Michael Peppler, if you're reading this, is there any work on supporting Perl's unicode format transparently in DBD::Sybase?

My employer might be able to pay to have this work done, if you're interested. Alternately, maybe you could give me some hints and I could try to figure it out.


-dave

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

Reply via email to