ID: 18169
Comment by: etraxis 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:
Looks like nobody is going to fix the issue. ;(
I haven't solution but I have workaround that I use in my project and
it works - it's sending and receiving data as binary.
=========
Example
=========
Let's assume, we have following data table, that allows us to store
unicode values (using UCS-2 encoding):
create table mytable
(
myfield nvarchar (100) null
);
Below is the code to work with:
$link = mssql_connect('dbhost', 'username', 'password');
mssql_select_db('database', $link);
// sending data to database
$utf8 = 'some unicode UTF-8 data'; // some Greek text for example
;)
$ucs2 = iconv('UTF-8', 'UCS-2LE', $utf8);
// converting UCS-2 string into "binary" hexadecimal form
$arr = unpack('H*hex', $ucs2);
$hex = "0x{$arr['hex']}";
// IMPORTANT!
// please note that value must be passed without apostrophes
// it should be "... values(0x0123456789ABCEF) ...", not "...
values('0x0123456789ABCEF') ..."
mssql_query("insert into mytable (myfield) values ({$hex})",
$link);
// retrieving data from database
// IMPORTANT!
// please note that "varbinary" expects number of bytes
// in this example it must be 200 (bytes), while size of field is
100 (UCS-2 chars)
$result = mssql_query("select convert(varbinary(200), myfield) from
mytable", $link);
while (($row = mssql_fetch_array($result, MSSQL_BOTH)))
{
// we get data in UCS-2
// I use UTF-8 in my project, so I encode it back
echo(iconv('UCS-2LE', 'UTF-8', $row['myfield']));
}
mssql_free_result($result);
mssql_close($link);
Previous Comments:
------------------------------------------------------------------------
[2007-06-14 08:37:39] giannisptr at yahoo dot gr
Has anyone found a solution to the encoding problem?????
I am using a web service to get a string of data from an sql server
2000 database. When i invoke the web service from php, greek characters
are replaced by character '?'.
------------------------------------------------------------------------
[2006-09-21 06:59:28] gautam dot webprogram at yahoo dot com
I want to connect php with MS SQL Server 2000 I have used the folloing
code in PHP:
<?
$connection = mysql_connect ("localhost","user name","password");
if (!$connection) {
echo "Couldn't make a connection!";
exit;
}
?>
The code doesn't execute.
------------------------------------------------------------------------
[2006-09-09 01:18:11] aireater at gmail dot com
I still have the same issue with the latest Windows binary 5.1.6 and MS
SQL Server 2005 Express, Standard, Enterprise on Windows XP, 2003
Server. It never works.
------------------------------------------------------------------------
[2006-04-20 01:24:43] timdilbert at gmail dot com
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.
------------------------------------------------------------------------
[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)
------------------------------------------------------------------------
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