php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #27416 Accents not supported by mssql functions
Submitted: 2004-02-27 09:03 UTC Modified: 2004-02-27 18:27 UTC
From: mooseyproductions at hotmail dot com Assigned:
Status: Not a bug Package: MSSQL related
PHP Version: 4.3.4 OS: Windows 2000/XP
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: mooseyproductions at hotmail dot com
New email:
PHP Version: OS:

 

 [2004-02-27 09:03 UTC] mooseyproductions at hotmail dot com
Description:
------------
When reading data from a SQL Server database, certain ASCII characters are incorrectly retrieved. Entering accented characters into the database works fine, however reading them from the database gives unexpected results.

ASCII chars 33 - 255 entered into database:

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~???????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????

(This appears fine when looking at the database using MS Enterprise Manager)

Result from read query:

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~__'?".??^%So_zY????Ͼ??????????????????????????ǎ???Ԑ??????ѥ???噞????????? ?Ƅ???????????Ф??????????????


It appears that characters after ASCII #127 are incorrectly returned from the database.

Using SQL Server 7.0 (ISO 8859-1 charset)


Reproduce code:
---------------
$string = '';
for ($i = 33; $i <= 255; $i++)
{
     $string .= chr($i);
}
 $db->query("UPDATE Test SET charset =  0x".bin2hex($string)." WHERE rowID = 1");

$result = $db->query("SELECT charset FROM Test WHERE rowID = 1");

$row = $db->getAssoc($result);

echo $row['charset'];

Expected result:
----------------
I expected to see what I had previously entered into the database. All text that contains accents is wrongly displayed.

Expected:

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~???????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????


Actual result:
--------------
Actual:

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~__'?".??^%So_zY????Ͼ??????????????????????????ǎ???Ԑ??????ѥ???噞????????? ?Ƅ???????????Ф??????????????

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-02-27 10:22 UTC] mooseyproductions at hotmail dot com
I have tried connecting to the SQL Server database using ODBC and it retrieves the data perfectly, as expected. I think I will use the ODBC functions for the meanwhile, until this bug is sorted.
 [2004-02-27 18:27 UTC] fmk@php.net
You need to use the same codepage to insert and fetch the data. When you insert data as binary values there is no codepage involved in the process but when you select the data it uses the OEM to ANSI convertion defined by the client library.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Jun 16 19:01:30 2024 UTC