A ver si me tiráis un flotador, que llevo ya varios días
ahogándome.. :)
Estoy en un servidor windows, que tiene instalado php con FastCGI.
Bien, desde php tengo que sacar los datos de una base de datos SQL
SERVER, a la cual accedo mediante odbc, no he conseguido hacerlo de
otra manera.
¿El problema? Los malditos caracteres al sacar los datos...
He probado con:
header('Content-Type: text/html; charset=UTF-8');
Y con utf8_encode, pero aún así algunos tipos de datos me siguen
volcando contenido con caracteres extraños..
Algún consejo? Alguna ayudita?
Muchas gracias de antemano.
--
Has recibido este mensaje porque estás suscrito al grupo "Grupo de programadores PHP de Barcelona" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a phpbar...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a phpbarcelona...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/phpbarcelona?hl=es.
Más datos, la base de datos tiene un "Collation Name:
Modern_Spanish_CI_AS".
Lo campos que quiero mostra contienen contenido html, y en base de
datos estan almacenados cómo "ntext".
Alguna idea más? Alguna ayuda más?
On 28 mar, 16:03, Eduard Llach <eduardll...@gmail.com> wrote:
> Prueba pasarlo por un HTML-Entities.
>
> Aunque creo que lo mejor es que mires qué configuración de carácteres está
> usando el SQL Server.
>
> Edu
>
> 2010/3/28 jope18jos...@gmail.com <jope18jos...@gmail.com>
>
>
>
>
>
>
>
> > Hola,
>
> > A ver si me tiráis un flotador, que llevo ya varios días
> > ahogándome.. :)
>
> > Estoy en un servidor windows, que tiene instalado php con FastCGI.
> > Bien, desde php tengo que sacar los datos de una base de datos SQL
> > SERVER, a la cual accedo mediante odbc, no he conseguido hacerlo de
> > otra manera.
>
> > ¿El problema? Los malditos caracteres al sacar los datos...
>
> > He probado con:
>
> > header('Content-Type: text/html; charset=UTF-8');
>
> > Y con utf8_encode, pero aún así algunos tipos de datos me siguen
> > volcando contenido con caracteres extraños..
>
> > Algún consejo? Alguna ayudita?
>
> > Muchas gracias de antemano.
>
> > --
> > Has recibido este mensaje porque estás suscrito al grupo "Grupo de
> > programadores PHP de Barcelona" de Grupos de Google.
> > Para publicar una entrada en este grupo, envía un correo electrónico a
> > phpbar...@googlegroups.com.
> > Para anular tu suscripción a este grupo, envía un correo electrónico a
> > phpbarcelona...@googlegroups.com<phpbarcelona%2Bunsu...@googlegroups.com>
Os cuento, paso los caracteres a UTF-8 con:
if( mb_check_encoding($valor, 'UTF-8') != 1 ){
$valor = mb_convert_encoding($valor, 'UTF-8');
}
Hasta aquí me lo hace perfecto, salvo para cadenas de textos muy
largas, de mayor de 4 mil y pico caracteres. ¿Sabeís porqué puede ser?
Una vez más, gracias
On 29 mar, 10:42, Eduard Llach <eduardll...@gmail.com> wrote:
> De la documentación del SQL Server:
>
> http://msdn.microsoft.com/es-es/library/ms187993.aspx
>
> Tipos de datos de longitud fija y variable para almacenar valores de gran
> tamaño con datos de caracteres y binarios Unicode y no Unicode. Los datos
> Unicode utilizan el juego de caracteres UNICODE UCS-2.
>
> El UCS-2 es una "versión" antigua del UTF-16, y tiene alguna que otra
> limitación.
>
> Ambos están soportados por el MBString
>
> http://www.php.net/manual/en/mbstring.supported-encodings.phphttp://www.moddular.org/log/utf16-to-utf8
>
> Edu
>
> 2010/3/29 jope18jos...@gmail.com <jope18jos...@gmail.com>
> > <phpbarcelona%2Bunsu...@googlegroups.com<phpbarcelona%252Buns...@googlegroups.com>
Gracias de nuevo. Lo he corregido, pero sigo con el mismo problema.
En las cadenas de más de 4 mil y pico caracteres, la codificación se
realiza en esos primeros 4 mil y pico caracteres, pero después no se
codifica el resto de la cadena, por lo no tengo ni idea cómo
arreglarlo..
Puede ser tema de capacidad? Alguna solución, o alternativa?
Saludos y gracias!
On 29 mar, 12:59, Eduard Llach <eduardll...@gmail.com> wrote:
> Lo primero que veo es que te falta un parámetro: el "from_encoding": s
> specified by character code names before conversion. It is either an
> array<http://www.php.net/manual/en/language.types.array.php>, or a
> comma separated enumerated list. If
> *from_encoding* is not specified, the internal encoding will be used. "*auto
> *" may be used, which expands to *"ASCII,JIS,UTF-8,EUC-JP,SJIS"*.
>
> Es decir, si no lo especificas, no parece que coja bien el tuyo.
>
> 2010/3/29 jope18jos...@gmail.com <jope18jos...@gmail.com>
>
>
>
> > Muchas gracias, ya creo que estoy cerca, pero sigo atascado en algo.
>
> > Os cuento, paso los caracteres a UTF-8 con:
>
> > if( mb_check_encoding($valor, 'UTF-8') != 1 ){
> > $valor = mb_convert_encoding($valor, 'UTF-8');
> > }
>
> > Hasta aquí me lo hace perfecto, salvo para cadenas de textos muy
> > largas, de mayor de 4 mil y pico caracteres. ¿Sabeís porqué puede ser?
>
> > Una vez más, gracias
>
> > On 29 mar, 10:42, Eduard Llach <eduardll...@gmail.com> wrote:
> > > De la documentación del SQL Server:
>
> > >http://msdn.microsoft.com/es-es/library/ms187993.aspx
>
> > > Tipos de datos de longitud fija y variable para almacenar valores de gran
> > > tamaño con datos de caracteres y binarios Unicode y no Unicode. Los datos
> > > Unicode utilizan el juego de caracteres UNICODE UCS-2.
>
> > > El UCS-2 es una "versión" antigua del UTF-16, y tiene alguna que otra
> > > limitación.
>
> > > Ambos están soportados por el MBString
>
> >http://www.php.net/manual/en/mbstring.supported-encodings.phphttp://w...
> > > > <phpbarcelona%2Bunsu...@googlegroups.com<phpbarcelona%252Buns...@googlegroups.com>
> > <phpbarcelona%252Buns...@googlegroups.com<phpbarcelona%25252Bun...@googlegroups.com>
Finalmente, y aunque sea muy cutre, vuelco desde otra aplicación todo
el contenido a una bd mysql, y al sacarlo con mysql_query, ya me sale
todo perfecto...
Si alguien encuentra solución al problema, bienvenida sea, ya que la
intriga la llevo dentro todavía.
Saludos y gracias!
On 29 mar, 13:58, "jope18jos...@gmail.com" <jope18jos...@gmail.com>
wrote:
- Make sure to include "set textsize 2147483647
" in your query.
Without it, MSSQL truncates large values to 4096 bytes by default.
Other databases may have a similar small limit