[Asterisk-code-review] func_odbc: acf_odbc_read() and cli_odbc_read() unicode support (...asterisk[master])

Alexei Gradinari asteriskteam at digium.com
Wed Sep 4 11:41:38 CDT 2019


Alexei Gradinari has posted comments on this change. ( https://gerrit.asterisk.org/c/asterisk/+/12812 )

Change subject: func_odbc:  acf_odbc_read() and cli_odbc_read() unicode support
......................................................................


Patch Set 4:

> Patch Set 4:
> 
> > > > I just did a test with MySQL.
> > > > 
> > > > CREATE TABLE test_utf8 (
> > > >     test_fld varchar(200)
> > > > ) DEFAULT CHARACTER SET utf8
> > > >   DEFAULT COLLATE utf8_general_ci;
> > > > 
> > > > CREATE TABLE test_utf16 (
> > > >     test_fld varchar(200)
> > > > ) DEFAULT CHARACTER SET utf16
> > > >   DEFAULT COLLATE utf16_general_ci;
> > > > 
> > > > The SQLDescribeCol returns collen=200 for both tables.
> > > > SQLColAttribute with SQL_DESC_OCTET_LENGTH returns
> > > > test_utf8  - 600
> > > > test_utf16 - 800
> > > 
> > > It's OK for MySQL (that can store the data in various encodings). But MS SQL (prior 2019) can store Unicode data (NCHAR/NVARCHAR/NTEXT types) in UTF-16 only.
> > 
> > My point is that the ODBC driver should correctly return SQL_DESC_OCTET_LENGTH.
> > If it's not that the issue either with driver configuration or driver implementation.
> 
> I created a table in SQL Server 2008R2 with the following column definition:
> 
>  UnicodeThing NVARCHAR(50)
> 
> The result of calling SQLColAttribute(… SQL_DESC_OCTET_LENGTH …) is 100. This value is correct as SQL Server stores this as UCS-2.
> 
> The problem is going to be converting the UCS-2 into UTF-8. From what I have read, when using the MS ODBC library, there are no client character set options, so you may have to roll your own method to do the character set conversion (which I believe is non-trivial).

freetds.conf
"client charset = UTF8"
in connection settings


-- 
To view, visit https://gerrit.asterisk.org/c/asterisk/+/12812
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Change-Id: I50e86c8a277996f13d4a4b9b318ece0d60b279bf
Gerrit-Change-Number: 12812
Gerrit-PatchSet: 4
Gerrit-Owner: Boris P. Korzun <drtr0jan at yandex.ru>
Gerrit-Reviewer: Alexei Gradinari <alex2grad at gmail.com>
Gerrit-Reviewer: Boris P. Korzun <drtr0jan at yandex.ru>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-CC: Sean Bright <sean.bright at gmail.com>
Gerrit-Comment-Date: Wed, 04 Sep 2019 16:41:38 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20190904/2553c242/attachment.html>


More information about the asterisk-code-review mailing list