En nuestra aplicación web usamos PHP5.2.6 + PDO para conectarnos a una base de datos de SQL Server 2005 y almacenar textos rusos.Conexión de PHP/PDO y SQL Server y problemas de i18n
La intercalación de la base de datos es Cyrillic_General_CI_AS
, la intercalación de tablas es Cyrillic_General_CI_AS
, el tipo de columna es NVARCHAR(MAX)
.
Intentamos conectarnos a una base de datos usando dos esquemas siguientes, ambos causando problemas diferentes.
PDO mssql:
$dbh = new PDO ('mssql:host='.$mssql_server.';dbname='.$mssql_db, $mssql_login, $mssql_pwd);
en cuyo caso un resultado de una consulta simple como que:
SELECT field1 FROM tbl1 WHERE id=1
muestra
field1
datos truncados a 255 bytes.PDO ODBC:
$dbh = new PDO ('odbc:DSN=myDSN;UID='.$mssql_login.';PWD='.$mssql_pwd);
en cuyo caso el resultado de la misma consulta muestra completos datos no truncados, pero con signos de interrogación en vez de símbolos rusos.
Notas:
- En los datos de SQL Management Studio es No símbolos truncados y rusos se muestran correctamente así.
- Tenemos Windows 2003 Enterprise Edition SP2
Entonces, ¿qué debemos elegir como método de conexión y cómo solucionar los problemas correspondientes?
Gracias por su respuesta, pero el problema es definitivamente en PHP/DOP - porque cuando nos conectamos a la misma base de datos en .NET, todo funciona bien. –