Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-10-2006
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 21
papulo Va por buen camino
Question Caracteres raritos (Mmmpppfff!! ¿esto que es?)

Código:
<?xml version='1.0' encoding='ISO-8859-1' ?> 

<TECH_DATA>
 <M>
  <TECH_ID>1</TECH_ID>
  <TECH_NAME>Voltaje</TECH_NAME>
  <TECH_ID>2</TECH_ID>
  <TECH_NAME>Kw</TECH_NAME>
  <TECH_ID>3</TECH_ID>
  <TECH_NAME>Tipo tapa del.</TECH_NAME>
  <TECH_ID>5</TECH_ID>
  <TECH_NAME>N� dientes</TECH_NAME>
  <TECH_ID>7</TECH_ID>
  <TECH_NAME>Rotaci�n</TECH_NAME>
  <TECH_ID>8</TECH_ID>
  <TECH_NAME>Agujeros</TECH_NAME>
 </M>
 <A>
  <TECH_ID>50</TECH_ID>
  <TECH_NAME>Voltaje</TECH_NAME>
  <TECH_ID>51</TECH_ID>
  <TECH_NAME>Amperios</TECH_NAME>
  <TECH_ID>52</TECH_ID>
  <TECH_NAME>Tipo</TECH_NAME>
  <TECH_ID>53</TECH_ID>
  <TECH_NAME>Pos. tensor</TECH_NAME>
  <TECH_ID>56</TECH_ID>
  <TECH_NAME>Rotaci�n</TECH_NAME>
  <TECH_ID>57</TECH_ID>
  <TECH_NAME>Agujeros</TECH_NAME>
 </A>
 <C>
  <TECH_ID>100</TECH_ID>
  <TECH_NAME>Voltaje</TECH_NAME>
  <TECH_ID>101</TECH_ID>
  <TECH_NAME>Kw</TECH_NAME>
  <TECH_ID>105</TECH_ID>
  <TECH_NAME>Rotaci�n</TECH_NAME>
  <TECH_ID>106</TECH_ID>
  <TECH_NAME>Fijaci�n</TECH_NAME>
  <TECH_ID>111</TECH_ID>
  <TECH_NAME>Amperios</TECH_NAME>
 </C>
</TECH_DATA>
¿Por que me salen esos rombitos con un simbolo de interrogación dentro?

No tengo ni idea de que son, por que salen y por extensión, no se que leches preguntarle al google.

H E L P ! !

Asias por la antención
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0

Última edición por papulo fecha: 03-10-2006 a las 12:27:20.
Responder Con Cita
  #2  
Antiguo 03-10-2006
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 27
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Simple: el tipo de letra que tienes instalado no incluye esos caracteres o no está correctamente configurada. Normalmente se trata de los caracteres con acento, ¿a que sí?. Deberías mirar la configuración UNICODE del sistema operativo y del navegador y, si es necesario, deberás instalar nuevos tipos de letra.

Última edición por Ñuño Martínez fecha: 03-10-2006 a las 12:48:31.
Responder Con Cita
  #3  
Antiguo 03-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Asegúrate de que la codificación de caracteres que utilizas en el archivo coincide con la codificación de caracteres que da como salida el Servidor, y, por otro lado, con la etiqueta raíz del documento XML en este caso, o sea, siguiendo con tu ejemplo podría ser más o menos así:

Código PHP:
<?php
header
("Content-Type: text/html; charset=ISO-8859-1");
?>
<?xml version
='1.0' encoding='ISO-8859-1' ?>
Empero, también podrías ahorrarte dicha cabecera (en todos los archivos) si añadieras al ".htaccess" del directorio oportuno (acaso el raíz de tu aplicación) una instrucción como la siguiente, siguiendo con tu ejemplo:

Código:
AddDefaultCharset ISO-8859-1
Sin embargo, no sé si aún así no tendrías que plantearte (para evitar problemas con esos caracteres, que acaso tuvieras que "identificar" mediante entidades HTML, ya sabes, &aacute, &eacute, etc.), digo, no sé si sería mejor que te plantearas utilizar la codificación UTF-8, puesto que de este modo podrías olvidarte de entidades HTML para caracteres "especiales", dado que estos están contemplados ya en UTF-8.

Creo, si no me equivoco, que ISO-8859-1 también contempla el tipo de caracteres de que hablamos, pero, UTF-8 va más allá y podría ayudarte, por ejemplo, a la hora de "localizar" la aplicación en diversos lenguajes, como el árabe, el chino, entre otros.

Haz pruebas a ver qué tal. Puedes encontrar información sobre esto en los buscadores si tratas de buscar por "codificación de caracteres", "codificación UTF-8", "comparativa UTF-8", etc., etc.

Creo que el reciente Hilo "tildes caprichosos" podrá proporcionarte más información o alguna que otra idea puesto que al cabo se trata de lo mismo.

Ojo, que la base de datos (al menos MySQL) admite también que se especifique una codificación de caracteres determianda, que habría también de estar "de acuerdo" con la que damos a la hora de dar salida a un documento desde el Servidor, esto es, siempre que sea precisa la intervención de la base de datos, como me parece que es en este caso.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-10-2006 a las 12:46:08.
Responder Con Cita
  #4  
Antiguo 03-10-2006
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 21
papulo Va por buen camino
Esta es el archivo PHP principal y el único sitio donde hay una cabecera.

Código PHP:
<?php
include "libreria_web.php";

header('Content-type: text/xml; charset="utf-8"');

$ref_num3 CleanUpSpaces($ref_num);

$limit_results 30//Numero máximo de resultados devueltos.

echo "<?xml version='1.0' encoding='ISO-8859-1' ?> \n";

switch (
$request_param)
        {
            case 
"TECH_INFO": echo TECH_INFO($ref_num3,$id_sup);break; //REF_NUM,ID_SUP
            
case "SEARCH_REF": echo SEARCH_REF($ref_num3,$limit_results);break;  //REF_NUM
            
case "CROSS_REF": echo CROSS_REF($ref_num3,$id_sup);break; //REF_NUM,ID_SUP
            
case "TECH_DATA": echo TECH_DATA($lang);break; //LANG
            
case "SPARE_DATA": echo SPARE_DATA($lang);break; //LANG
            
default: echo "INCORRECT REQUEST PARAMETER";
        }

?>
Lo de las cabeceras lo tengo que estudiar a conciencia (pobrecito de mi que pensé que acabada la carrera dejaría de estudiar...)

Me voy a leer el hilo.

"Graciases" por ahora y sigo al tanto.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #5  
Antiguo 03-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Nota que la cabecera HTTP que envías con PHP e indica la codificación del archivo, esto es, la codificación que indiques ahí, ha de coincidir con la que indicas en la "cabecera" del archivo XML, esto es, no como pones arriba, la primera en "UTF-8" y la segunda en "ISO".

Piensa también que el archivo que contiene el propio código PHP (por resumir) ha de guardarse, propiamente, usando la codificación adecuada, es decir, ha de coincidir con la de las "cabeceras" mencionadas antes. No estoy seguro para ISO (no sé si basta con guardar el fichero codificado en "ANSI"), pero, para UTF-8 la codificación en que se guarda el fichero ha de ser esa: UTF-8.

Por último, como comenté arriba, en la base de datos, al menos los de tipo "string", "texto", han de guardarse también con la correspondiente codificación. A lo menos las cuatro cosas creo que son necesarias para que no te encuentres con problemas de caracteres extraños como los que te has topado.

Resumiendo:

1º Fichero del Script PHP guardado en la codificación elegida (UTF-8 creo que se recomienda, al menos a mí, y no sólo a mí, me va bien)

2º Cabecera HTTP mediante PHP (con la función "header") o mediante el ".htacess", o mediante la clave correspondiente en el archivo de configuración de Apache, digo, que indique la codificación "que perseguimos".

3º Meta-etiqueta HTML o XML, en nuestro caso, que indique a su vez la codificación de caracteres correspondiente.

4º Datos (texto) en la base de datos codificados, igualmente, de manera que coincida con la codificación indicada anteriormente de las maneras que comentamos.

Y, bueno... creo que eso es todo... aunque es un tema que en cierto modo se me escapa, no nos vamos a engañar. Creo que debes hacer unas cuantas pruebas y darás con el tema, que ya verás como no es tan "lioso" como yo, lamenteblamente, puedo explicarlo, ni mucho menos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 03-10-2006
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 21
papulo Va por buen camino
Me acabo de leer el hilo y me he quedado igual... JAJAJAJA!! Que pez estoy todavía. Seguiré leyendo con la calma.

Saludooox.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #7  
Antiguo 03-10-2006
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 21
papulo Va por buen camino
Código PHP:
//CAMBIANDO
header('Content-type: text/xml; charset="UTF-8"');
//POR
header('Content-type: text/xml; charset="ISO-8859-1"'); 
Se ha arreglado del todo todito.

Ahora, me tengo que poner con el tema de las cabeceras, porque parece importante e interesante.

Gracias por la HELP!
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #8  
Antiguo 03-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. El caso es que en el Hilo que mencioné más arriba, aun cuando en el caso de que se trata los caracteres "extraños" aparecen en un correo electrónico, o sea, en su cuerpo, lo cierto es que el "concepto" es el mismo: ha de servirse un documento con una determinada codificación y la misma ha de indicarse en las cabeceras del correo (no confundir con las cabeceras HTTP, pero, en cierto modo sirven para algo similar) e incluso en la meta-etiqueta HTML del correo, si es que este fuera en formato HTML, claro.

Al compañero pareció funcionarle bien, es decir, adiós a los caracteres "extraños".

Cita:
Empezado por Papulo
Ahora, me tengo que poner con el tema de las cabeceras, porque parece importante e interesante.
Está bien, pero, piensa que en este caso que nos ocupa las cabeceras HTTP (que puedes enviar mediante la función "header" de PHP) son una parte más del rompecabezas, esto es, las cabeceras HTTP dan mucho más juego, y, podría decirse, no es que sirvan para esto de que hablamos, sino que, también sirven para esto.

Es decir, ten en cuenta que las cabeceras HTTP son eso, cabeceras HTTP, no son exclusivas de PHP, ni pertenecen a este lenguaje, sino que pueden usarse y se usan en otros lenguajes y para otras circunstancias: las cabeceras HTTP se pueden "estudiar" en la especificación del protocolo HTTP: la función "header" de PHP sirve para enviar estas, pero, no es cuestión de estudiar el uso de esta función, que también, por supuesto.

Si buscas por ahí (je, je, je) encontrarás la traducción al español (y otros idiomas) de la especificación del protocolo HTTP: es ahí donde debes parar mientes, puesto que lo demás (su uso en PHP, por ejemplo) vendrá dado por añadidura, si puede decirse así.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-10-2006 a las 13:35:00.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Q es esto? OSKR La Taberna 2 22-06-2006 16:52:07
ayudenme con esto si pharaonhx OOP 4 21-03-2004 14:01:11
por esto omy API de Windows 3 28-11-2003 22:53:56


La franja horaria es GMT +2. Ahora son las 14:17:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi