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

From: Date: Mon, 15 Mar 2021 17:19:06 +0000
Subject: Bug #80869 [Com]: SQL Server: Read NVARCHAR Unicode
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-232747@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:             Feedback
 Type:               Bug
 Package:            PDO ODBC
 Operating System:   Ubuntu 18.04 Server
 PHP Version:        8.0.3
 Assigned To:        cmb
 Block user comment: N
 Private report:     N

 New Comment:

Please, pardon my ignorance. I don't get any segfault. How can I provide an ODBC trace?


Previous Comments:
------------------------------------------------------------------------
[2021-03-15 16:49:15] cmb@php.net

Could you please provide ODBC traces for PHP 7.4 and 8.0; ideally
place them somewhere publicly accessible on the Web (e.g.
gist.github.com, pastebin.com) and only link to them.

------------------------------------------------------------------------
[2021-03-15 16:25:05] sergiopaternoster73 at gmail dot com

Description:
------------
I have an SQL Server 2012 table that contains all NVARCHAR columns.
With PHP 7.3/7.4 I can read both ASCII and UNICODE characters from the table by running this query:
SELECT CAST([NAME] AS NVARCHAR(MAX)) AS [Name] FROM [Table].
With php-8.0.3 I can still read ASCII results (plain English, for example) but not UNICODE anymore
(Chinese characters, in my case).

I use php-8.0.3 with FreeTDS on Linux Ubuntu. In PHP 7.3/7.4 works well!




Test script:
---------------
```
$query = "SELECT
          CAST([NAME] AS NVARCHAR(MAX)) AS [Name]
          FROM [Table]";
$pdo      = new PDO("odbc:MyConnection","MyUser","MyPassword");
$rs       = $pdo->query($query);
$result   = $rs->fetchColumn();
file_put_contents("result.txt",$result);
$pdo = null;
```

/etc/odbc.ini settings

[MyConnection]
Description       = "Data Warehouse"
Port              = 1433
Driver            = FreeTDS
Description       = SQL Server
Trace             = No
Server            = my.server.com
Database          = AB
TDS_Version       = 8.0
Client_Charset    = UTF-8
ApplicationIntent = ReadOnly

Expected result:
----------------
Readable Unicode (Chinese, in my case) characters (like it is in PHP 7)

Actual result:
--------------
Unreadable characters


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



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


Thread (15 messages)

« previous php.bugs (#232747) next »