ID: 18169 Comment by: timdilbert at gmail dot com Reported By: joesterg at hotmail dot com Status: No Feedback Bug Type: MSSQL related Operating System: Windows 2000 Server PHP Version: 4.1.2 New Comment:
Just out of curiousity I was wondering if this was fixed in PHP5 and MSSQL 2005?? I haven't tried using COM just yet, but I will be when I get home (on MSSQL 2000). But I was having the same problem with PHP5 and inserting UTF-8 encoding into MSSQL Server 2000. I will post if this fixed my problem. If not, I'm really sorry guys.. I love PHP, but I might be be rebuilding my entire site is C# because Unicode support is absolutly vital to our company and success. Previous Comments: ------------------------------------------------------------------------ [2004-04-15 06:07:34] samlinxp at msn dot com I have the same problem. My setup is: Windows XP Server, with Apache 2.0.47/PHP 4.3.6RC3 and Microsoft SQL Server 2000 Hope this problem can be solved soon. This is quite important especially at Asia Pacific's regions (CHN, HK, TW, JP, KR.. etc) ------------------------------------------------------------------------ [2003-06-29 21:33:00] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip ------------------------------------------------------------------------ [2002-12-18 18:18:47] fvu at wanadoo dot nl If you're using PHP on a Windows platform you can use the PHP COM extension to communicate with SQL Server via ADO. The PHP COM extension is capable of translating UTF-8 to UCS-2 and back if you specify so as the third parameter: $oDb = new COM('ADODB.Connection', NULL, CP_UTF8); This way you can use Unicode UTF-8 within PHP and Unicode UCS-2 within SQL Server with all the translations done for you automatically. HTH, Freddy Vulto ------------------------------------------------------------------------ [2002-07-06 07:08:48] joesterg at hotmail dot com Thanks Marko -I guess this means that if you are to use binary (ie. unicode) data, then COM/ADO is your only option, if SQL Server is the database of your choice. >From yohgaki's answer, I guess also the multibyte encoding functionality lacks proper Unicode support -am I correct in assuming that we will have to move to PHP4.2.x and do our own encoding/decoding through the Win32 API then? ------------------------------------------------------------------------ [2002-07-05 05:34:22] [EMAIL PROTECTED] PHP's mssql extension uses the Microsoft SQL Server's C API, the "DB-Library for C". Specifically, SQL queries are sent to the server using the dbcmd() function. This function is not binary safe, so inserting UCS2 text or images or any binary data is likely to fail. The DB-Library for C has separate, binary-safe APIs for entering text and images, but they are complicated and difficult to seamlessly integrate to the current mssql extension. Look up the documentation for dbwritetext() if you feel like implementing this change. UTF-8 and UTF-7 are, IIRC, the only Unicode encoding that are guaranteed not to include null characters. They are, therefore, the only encodings that can be reliably used with PHP's mssql extension at this time. ------------------------------------------------------------------------ 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 http://bugs.php.net/18169 -- Edit this bug report at http://bugs.php.net/?id=18169&edit=1
