SQL DRIVER FOR PHP / MSSQL 2008 Standard Edition (64-bit) SP4 (10.0.6000.29)
Hello,
we have a software developped in PHP that was running under
windows server 2008 R2 64bits - MSSQL 2008 32 bits
we migrate the software yesterday from 32 bits to 64 bits.
and all the troubles began ....
Important to specify that we did the same migration a few weeks ago in our test servers and it works perfectly.
In our production server, one of our big problem is charset .
the soft is using iso-8859-1 (french accent)
we have problem with words with accent like é (see attached file)
I compared test and production server, and I don't see any difference !
same Apache/2.2.17 (Win32) PHP/5.3.21
same sql driver for PHP: php_pdo_sqlsrv_53_ts.dll (3.0.3421)
same windows 2008 R2 Enterprise SP1
same MSSQL 2008 Standard Edition (64-bit) SP4 (10.0.6000.29)
same SQL Server Native CLient 11.0 2011.110.5058.00 15/05/2014
please see attached php info of both servers. do not see important difference.
for connexion I use this code
$iConnect = new PDO($connectString, NULL, NULL);$iConnect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);$iConnect->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_SYSTEM);
I connected my test apache/php to sql production, and no problem of accent.
so the problem seems to be in apache or in php , not in the sql database setup.....
Ray Paseur
This is the "signature" of a character encoding conflict. Suggest you switch everything to UTF-8. You must have consistency across all parts of the platform: HTML, PHP scripts, the database.
I agree with Ray. Every time I see that symbol, I switch between UTF8 and ISO-8859 to see which character set the page is using. I believe PHP 5.3 uses ISO-8859 by default though newer versions have switched to UTF-8.
Hi Ray, you're always the first to help me when eveything goes wrong...(:-) many thanks.
in fact I identified since the beginning that the problem is an encoding issue.
I can't change the whole soft right now from 8859 to utf-8, this is an ERP and this step cannot be done "by the way".
I'm getting crazy with this problem because we made everything to avoid issues, and the migration of the test server from SQL 32 bits to 64 bits was Ok .
this ERP is working for more than 10 years, and the last migration from sql 32 to 64 was a very minor change. Don't you have any direction to search the issue ? I checked almost everything between the 2 servers and I don't see any difference to justify the problem.....
bruno_boccara
ASKER
By the way, I listened to you and tried to change some pages to utf-8 (in the test server)
know I have the same problem with strange caracters.
even if for the connexion I use $iConnect->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8); instead of PDO::SQLSRV_ENCODING_SYSTEM
do no work ....
I'd really like to move to utf-8 but it seems that it's more simple to say than to do .....
David Johnson, CD
as a test use mssql management studio and see if it is saved to the DB correctly. Which collation are you using for mssql ? When you installed MSSQL you will have to change the collation from the default.
Wonderful! I'm hoping that UTF-8 answers a multitude of encoding problems. It's so elegantly simple that there is no longer any excuse to go back to the old ways.
I connected my test apache/php to sql production, and no problem of accent.
so the problem seems to be in apache or in php , not in the sql database setup.....