Estoy generando un archivo XML con PHP usando DomDocument y necesito manejar caracteres asiáticos. Estoy extrayendo datos del servidor MSSQL2008 utilizando el controlador pdo_mssql y aplico utf8_encode() en los valores de los atributos XML. Todo funciona bien siempre que no haya caracteres especiales.Codificando SQL_Latin1_General_CP1_CI_AS en UTF-8
El servidor es MS SQL Server 2008 SP3
La base de datos, tabla y la columna de colación están todos SQL_Latin1_General_CP1_CI_AS
estoy usando PHP 5.2.17
Aquí está mi DOP objeto:
$pdo = new PDO("mssql:host=MyServer,1433;dbname=MyDatabase", user123, password123);
Mi consulta es una SELECCIÓN básica.
Sé que el almacenamiento de caracteres especiales en SQL_Latin1_General_CP1_CI_AS columnas no es genial, pero idealmente sería bueno hacerlo funcionar sin cambiarlo, porque otros programas que no son PHP ya usan esa columna y funciona bien. En SQL Server Management Studio puedo ver los caracteres asiáticos correctamente.
Considerando todos los detalles anteriores, ¿cómo debo procesar los datos?
¿Has probado ['utf8_encode()'] (http://ca3.php.net/manual/en/function.utf8-encode.php)? Según el manual: 'Codifica una cadena ISO-8859-1 a UTF-8'. –
Por supuesto, eso es lo que estoy haciendo actualmente, pero los caracteres asiáticos aparecen como '?'. Incluso si solo ejecuto SELECT y luego pongo los datos en un archivo (utf8_encode o no), los caracteres asiáticos terminan como '?' en el archivo. – SGr
Realmente me sorprende que en realidad pueda codificar caracteres asiáticos en 'LATIN1'. 'LATIN1' es solo para codificar caracteres europeos ... –