Hola:
En mi base de datos al poner initcap(cad) cuando aparece por ejemplo SÁNCHEZ lo pone como SáNchez ¿alguien me podria decir por k? estoy utulizando pl/sql de oracle 10g
Saludos
| |||
Problemas con INITCAP y los acentos y tildes Hola: En mi base de datos al poner initcap(cad) cuando aparece por ejemplo SÁNCHEZ lo pone como SáNchez ¿alguien me podria decir por k? estoy utulizando pl/sql de oracle 10g Saludos |
| |||
Respuesta: Problemas con INITCAP y los acentos y tildes quizás porque estás usando esa función con una codificación utf8. ¿Es eso? Pregunta en el foro de oracle. Allí te lo solucionarán rápido. Me imagino que si haces un convert de utf8 a iso-88591 antes de aplicarle el INITCAP, y luego al resultado de aplicar esa función vuelves a convertirlo en utf8, tendrás una solución (algo parecido hacemos en MySQL), pero creo que lo mejor es que preguntes en el foro de ORACLE. http://www.forosdelweb.com/f100/ Última edición por jurena; 27/06/2009 a las 01:33 |
| ||||
Respuesta: Problemas con INITCAP y los acentos y tildes Yo dudo que sea problema de codificación. Si la salida es SáNchez es por que realmente reconoce las tildes la base de datos. Yo veo mas bien que es un problema de la función initcap,lower y upper para convertir tildes. (Incluso hay problemas en mysql para convertir tildes con lower y upper) Puedes aplicar un truco, pero eso te escondería las tildes que tengas en el campo.
Código sql:
Ver original De esta forma te imprime Sanchez así el campo original esté con tilde. Un saludo.
__________________ Without data, You are another person with an opinion. W. Edwads Deming |
| |||
Respuesta: Problemas con INITCAP y los acentos y tildes No me expliqué bien, quería decir exactamente eso, que es un problema de usar esa función, pero con utf8, y sobre todo con vocales acentuadas que no se guardan igual en utf8. La función reconoce la vocal acentuada, pero no el byte de más propio de UTF8 e interpreta la palabra como dos palabras: de ahi que acentúe la N posterior, como si se tratase de una segunda palabra que empieza ahí. El truco es cambiar antes a otra codificación con la que la función no tenga ese problema (suele ser ISO-8859-1); luego se le aplica la función, y posteriormente se convierte de ISO-8859-1 a utf8, de nuevo. En MySQL este proceso suele funcionar y de hecho hay numerosas funciones en PHP para realizar el proceso, por ej. strtoupper_utf8, una función no nativa, sino aportada por los colaboradores y que hace lo mismo que strtoupper, pero en codificación utf8, y que consiste en decodificar, usar la función strtoupper y luego codificar de nuevo a utf8. Imaginemos que tiene SÁNCHEZ en el campo llamado campo, en codificación utf8, yo probaría algo así. Acabo de inventármelo y no he usado nunca Oracle, pero me parece que la lógica es la correcta. Los resultados me los diréis los que trabajáis con Oracle.
Código sql:
Ver original Última edición por jurena; 28/06/2009 a las 03:35 |