Bug #80869 [Com]: SQL Server: Read NVARCHAR Unicode

From: Date: Tue, 16 Mar 2021 12:08:04 +0000
Subject: Bug #80869 [Com]: SQL Server: Read NVARCHAR Unicode
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-232775@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80869&edit=1

 ID:                 80869
 Comment by:         sergiopaternoster73 at gmail dot com
 Reported by:        sergiopaternoster73 at gmail dot com
 Summary:            SQL Server: Read NVARCHAR Unicode
 Status:             Open
 Type:               Bug
 Package:            PDO ODBC
 Operating System:   Ubuntu 18.04 Server
 PHP Version:        8.0.3
 Block user comment: N
 Private report:     N

 New Comment:

I have recompiled php 8 with the latest version of FreeTDS but the problem persists. Do you have any
other suggestions to query SQL Server from PHP on Linux and preserve UTF-8 chars?


Previous Comments:
------------------------------------------------------------------------
[2021-03-16 10:14:48] sergiopaternoster73 at gmail dot com

Quick question. 
I compile php with --with-pdo_odbc=unixODBC,/usr and --with-unixODBC=/usr

Pardon my ignorance again, shall we focus on FreeTDS or unixODBC to look for a solution?

------------------------------------------------------------------------
[2021-03-16 07:22:31] sergiopaternoster73 at gmail dot com

Thanks for checking. It looks the opposite to me, am I wrong?
 
PHP 8 uses ISO-8859-1 
iconv.c:330:tds_iconv_open(0x3a6c880, ISO-8859-1)

while PHP 7.4 UTF-8
iconv.c:330:tds_iconv_open(0x2754e40, UTF-8)

I will anyway try to compile the latest version of FreeTDS to see if this will improve.

------------------------------------------------------------------------
[2021-03-15 20:53:37] cmb@php.net

Thank you for the traces!  These are actually quite helpful,
because the first lines show a difference in the setup or build
(7.4 uses ISO-8859-1, while 8.0 uses UTF-8).  I don't know
FreeTDS, so I have no idea why they are using different client
charsets.  Consider to ask on a FreeTDS support channel, too.

------------------------------------------------------------------------
[2021-03-15 18:08:58] sergiopaternoster73 at gmail dot com

Thank you for the guidance. Here the traces:

php-7.4
https://gist.github.com/capsandiego/8f2176ebc29ab961612bb225f06f452e

php-8.0.3
https://gist.github.com/capsandiego/92d963c3fa40bfcf8861bc46a2d33f35

------------------------------------------------------------------------
[2021-03-15 17:47:55] cmb@php.net

An ODBC trace is not related to segfaults (you probably mean a
stack backtrace).  Anyway, since I'm using Windows I'm not sure
how to get an ODBC trace on your platform, but the FreeTDS User
Guide has a chapter on logging[1]; probably the last section on
this page is relevant.

See <https://bugs.php.net/80868#1615816567> for an
example of an
ODBC trace.

<https://www.freetds.org/userguide/logging.html>

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=80869


--
Edit this bug report at https://bugs.php.net/bug.php?id=80869&edit=1


Thread (15 messages)

« previous php.bugs (#232775) next »