Foros del Web » Programación para mayores de 30 ;) » Programación General »

¿Qué caracteres no se deben utilizar?

Estas en el tema de ¿Qué caracteres no se deben utilizar? en el foro de Programación General en Foros del Web. Creo que existen algunos caracteres que no se deben utilizar al crear los archivos XML. ¿Podeis decirme cuales son y si existe algún modo de ...
  #1 (permalink)  
Antiguo 18/10/2004, 11:15
 
Fecha de Ingreso: febrero-2003
Mensajes: 67
Antigüedad: 21 años, 9 meses
Puntos: 0
¿Qué caracteres no se deben utilizar?

Creo que existen algunos caracteres que no se deben utilizar al crear los archivos XML.

¿Podeis decirme cuales son y si existe algún modo de salvar ese inconveniente?
No estoy seguro si metiendo todo entre CDATA se evitarían los problemas

Código:
 <![CDATA[ ........................... ]]>
  #2 (permalink)  
Antiguo 18/10/2004, 13:16
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 3 meses
Puntos: 16
hasta donde se los acentos y la "ñ" no esta permitidos en los xml debido a que los gringos no los usan, pero luego salieron con algo que diera soporte al resto de los idiomas.

Prueba colocando esto alcomienzo de tu xml

<?xml version="1.0" encoding="iso8859-1" ?>

si no es eso... tonces nosé
  #3 (permalink)  
Antiguo 19/10/2004, 06:29
 
Fecha de Ingreso: agosto-2004
Mensajes: 15
Antigüedad: 20 años, 2 meses
Puntos: 0
El encoding resuelve en parte los caracteres en idioma español como bien dice Muzztein, además de garantizar que se muestren de forma correcta, pero si te quieres asegurar de trabajar sin problemas con todo tipo de caracteres debes usar <![CDATA[ ........................... ]]> como bien planteas en tú mensaje.

Saludos, Alain
www.keygroup.cl
www.insade.cl
www.codecor.cl
  #4 (permalink)  
Antiguo 19/10/2004, 08:17
 
Fecha de Ingreso: febrero-2003
Mensajes: 67
Antigüedad: 21 años, 9 meses
Puntos: 0
Gracias a los dos.
Eso era lo que suponía.
Os he planteado el problema, porque importando algún archivo xml con un parser php, he observado cosas muy extrañas en relación con las urls ya que las tags de las mismas no utilizan <![CDATA[...]]>

Por algún lado había leido que si en las urls se utilizaban los caracteres &, ? y algún otro más que no recuerdo, se podían producir errores.

¿Sabeis si esto tiene solución? Teniendo en cuenta que no me es posible acceder al archivo original xml para modificarlo.

Última edición por wood; 19/10/2004 a las 08:19
  #5 (permalink)  
Antiguo 19/10/2004, 10:09
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 3 meses
Puntos: 16


prueba parseando el xml antes de imprimirlo.


por ejemplo si usas xsl para imprimir los datos en pantallla, caracteres y palabras como espacios en blanco &nbsp; , & ,< , y > se escriben de otra manera en xsl.

por ejemplo el < es &lt; y cosas asi.



lo que yo haria:
a la hora de cargar el documento xml con el php, le haria un replace sobre todos los nodos que pudieran contener caracteres extraños como &,#,?,<,> por sus caracteres validos xsl.

mi granito de arena
  #6 (permalink)  
Antiguo 22/10/2004, 02:49
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
En php existe la funcion htmlentities() y unhtmlentities() para ese tipo de cosas. Mira en el manual de php.net
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #7 (permalink)  
Antiguo 19/11/2004, 03:36
 
Fecha de Ingreso: noviembre-2004
Mensajes: 3
Antigüedad: 20 años
Puntos: 0
Mi experciencia con CDATA, es que cuando existen ciertos caracteres como por ejemplo el 05(HEX) dento de dicho CDATA no funciona correctamente y el parser da error. La prueba la he realizado con:
- MSXML4.0
- encoding ISO-8859-1 y UFT-8

¿Alguien tiene alguna explicación?

Gracias
  #8 (permalink)  
Antiguo 20/11/2004, 15:56
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
No entiendo lo que dices que da error al usar el CDATA.
Lo que contiene un CDATA el parser no llega ni a parsearlo asi que no entiendo cuando dices que el parser te devuelve un error. Sera otro fallo del resto del XML.

Lo unicoque no puedes utilizar dentro de una sección CDATA es la secuencia de caracteres ]]> que es como debe finalizar una seccionCDATA.

Prueba aponer ese XML completo aqui y lo vemos entre todos a ver de donde viene ese error.

Ciaoo
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #9 (permalink)  
Antiguo 22/11/2004, 02:52
 
Fecha de Ingreso: noviembre-2004
Mensajes: 3
Antigüedad: 20 años
Puntos: 0
Caracteres Exluidos En Cdata

Gracias HELBIRA, por la ayuda.

Ojo que no podomos poner cualquier cosa en el contenido del cdata. He sacado esto de w3c.org:

Character Range
[2] Char ::= #x9 | #xA | #xD |
[#x20-#xD7FF] |
[#xE000-#xFFFD] |
[#x10000-#x10FFFF]
/* any Unicode character,
excluding the surrogate
blocks, FFFE, and FFFF.

Con lo que aparte de la secuencia de fin de CDATA tendremos que tener en cuenta el rango de arrriba. Puede probarlo tú entrando en cualquier xml y con un editor entrar en mode HEX e insatar por ejemplo un 05(HEX).


Saludos.
  #10 (permalink)  
Antiguo 22/11/2004, 03:38
 
Fecha de Ingreso: noviembre-2004
Mensajes: 3
Antigüedad: 20 años
Puntos: 0
La alternativa puede ser (como ya he visto como sulución el algún otros sitio) codificar en BAS64 los campos que puedan llevar caracteres fuera del rango anterior y olvidarse del CDATA.

saludos.
  #11 (permalink)  
Antiguo 22/11/2004, 06:22
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 3 meses
Puntos: 16
una pregunta.

y en que casos es posible encontrarse con un caracter en modo hexadecimal?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:41.