entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Uso HTML5 Builder de Embarcadero.
Hay una demo muy simple de uso de ajax. Al pulsar un botón ajax cambia su caption y el de una label.
Pues bien, si pongo otra label independiente aparte con texto conteniendo caracteres como la eñe o vocales con tilde la demo ya no funciona. Se cuelga y da el siguiente error:
"ERROR: ResponseReceived: Invalid response XML: The response contains an unexpected tag or text: {data}."

He probado a cambiar FileFormat a UTF8 en todos los documentos php.
Lo máximo que consigo es que cargue la página en el navegador con caracteres ilegibles en la etiqueta independiente, y al pulsar el botón que llama a ajax entonces se refresca todo, ajax va bien, y los caracteres se vuelven legibles.

¿Alguna sugerencia?

0voto

OscarCanfranc comentado

¿Hay alguna URL donde pueda ver esa demo?

1voto

PacoRuiz comentado

No, ahora mismo estoy haciendo pruebas en un PC.
Lo único (creo) que podría hacer es mandarte los ficheros php generados.

Por cierto, también probé a cambiar "File Format" de ANSI a UTF8 en el fichero PHP.
Lo que ocurría es que se solucionaba el problema de ajax pero aparecía otro.
En este caso al generar la página html, los caracteres especiales aparecían ¡ ilegibles !;
eso sí tras pulsar el botón, ajax si va bien y los caracteres se cambian "por arte de magia" a legibles. Vamos, un lío.

2votos

dragoncete comentado

No conocía el HTML5 Builder (apuntado!!) pero ese error de XML es el típico de cuando hay algun caràcter extraño dentro de un campo (alguno que no interpreta bien, como los <> o otros caràcteres que confunden el contenido con la definición de la estructura de la pàgina).

Seguramente pasa porque la aplicación se debe comunicar con ella misma mandándose los datos o guardándolos en formato XML o algo parecido.

En XML se evita utilizando la etiqueta CDATA:

<campo><![CDATA[
<texto con caràcteres extraños>
]]></campo>

No sé si en tu programación te encaja esto.

Tienes más información aqui:
http://www.w3schools.com/xml/xml_cdata.asp

1voto

OscarCanfranc comentado

No recuerdo bien cómo era (hasta la tarde-noche no podré mirarlo), pero algo parecido lo he solucionado con las funciones Encode y Decode (o algunas parecidas) de PHP. Primero codificando y luego decodificado, o algo así.

Perdona por la respuesta tan vaga. Espero que, al menos, te sirva como pista.

En cuanto a los ficheros php, escribe de momento la parte del código que genera la label.

2 Respuestas

2votos

PacoRuiz Puntos380

El problema final estaba en la configuración por defecto de PHP.
Puse lo siguiente y parece que funciona:

Default Charset: utf-8
Language: "neutral"
Detect Order: auto
HTTP Input: auto
HTTP Output: UTF-8
Internal Encoding: UTF-8
Script Encoding: auto
Substitute character: NULL
Function Overload: "0"
Encoding Traslation: On
Strict Detection: Off

0voto

Peter comentado

Si esta es la solución, por favor márcala como respuesta correcta. :)

2votos

OscarCanfranc Puntos570

¿Has probado a usar html entities?
&ntilde; para la ñ, &aacute; para la á, etc.

2votos

PacoRuiz comentado

Funciona correctamente aunque en mi caso no lo veo operativo.
Analizar/cambiar todo el texto que saco de una base de datos tanto a la ida (php) como a la vuelta (javascript) me parece excesivamente engorroso.
En cualquier caso gracias por la sugerencia.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta