Skip to Content.
Sympa Menu

freetds - Re: [freetds] FreeTDS, Perl, unicode

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "James K. Lowden" <jklowden AT freetds.org>
  • To: freetds AT lists.ibiblio.org
  • Subject: Re: [freetds] FreeTDS, Perl, unicode
  • Date: Mon, 11 Mar 2013 12:06:13 -0400

On Mon, 11 Mar 2013 04:31:41 -0700
Brian Johnson <serversage AT gmail.com> wrote:

> Log file is attached.
>
> I'll confess, this whole unicode thing is new to me so I'm not
> certain *how* to set the client encoding. Is there some docs anybody
> can recommend?

I recommend the appendix in the UG for background information. :-)

> I'll give the other items you tried a shot when I get going in the
> morning.

Forget sqsh; thought you were using DBD::Sybase. You're using
DBD::ODBC, which surely should work. Try the query with bsqlodbc. It
should be very easy, e.g.

$ bsqlodbc -S $S <<< 'select cast(min(name) as
varchar (30)) as name from systypes'

I'm not able to try that myself right now. My installed version of
FreeTDS fails with an old error, and atm I can't compile the master
branch.

Your log file says

iconv.c:349:setting up conversions for client charset "UTF-8"

so Unicode should be presented to the client as UTF-8. When it gets
the metadata, is says

> token.c:1486:tds7_get_data_info:
> colname = bill_cd_typ_desc (16 bytes)
> type = 47 (char)
> server's type = 239 (x UCS-2 char)
> column_varint_size = 2
> column_size = 20 (20 on server)

which seems to indicate that the UCS-2 NCHAR column is being converted
to CHAR. Then when you read the row (2 rows, in fact)

> token.c:555:processing result tokens. marker is d1(ROW)
> token.c:2304:tds_process_row(): reading column 0
> token.c:2049:tds_get_data: type 47, varint size 2
> token.c:2110:tds_get_data(): wire column size is 20

I don't see iconv being invoked to convert to UTF-8. But I'm not sure
I should....

--jkl


> James K. Lowden wrote:
> > On Mon, 11 Mar 2013 02:42:32 -0700
> > Brian Johnson<serversage AT gmail.com> wrote:
> >
> >> I don't see any user/pass info in it, so if needed I could attach
> >> the log. Though I do see "SQLExecute returns SQL_SUCCESS".
> >
> > You can post a log here. A TDS 7+ dump won't contain user
> > credentials.
> >
> > You're sure the client encoding is set up correctly, and the Perl
> > knows what to expect?
> >
> > Test other than TDSDUMP: Besides using Perl, you might try with
> > bsqldb, because if it behaves the same way you have either a setup
> > problem or a bug, and with sqsh, because sqsh also uses the ct-lib
> > API.
> >
> > HTH.
> >
> > --jkl
> > _______________________________________________
> > FreeTDS mailing list
> > FreeTDS AT lists.ibiblio.org
> > http://lists.ibiblio.org/mailman/listinfo/freetds




Archive powered by MHonArc 2.6.24.

Top of Page