Caracteres especiales - Ampersand

132 views
Skip to first unread message

Mikel Gómez

unread,
Mar 1, 2006, 3:20:31 PM3/1/06
to Foros focus
El carácter ampersand ("&") [http://es.wikipedia.org/wiki/Ampersand]
es otro carácter especial en el lenguaje FOCUS.

Dicho carácter ampersand , seguido por otro o más caracteres, es el
que usa el lenguaje FOCUS o WebFOCUS para identificar la variables de
Dialogue Manager.

Los problemas con este carácter surgen cuando se desea incluirlo
dentro del valor de un campo o variable sin se interprete como
variable.

La solución ideal a este tema consiste en la colocación del carácter u
operador de concatenación ("|") tras el ampersand.

-SET &VAR = 'VALOR1&|VALOR2' ;

Existe otra solución, solo para cuando conocemos los caracteres
exactos que vamos a emplear, consistente en realizar un SET o -DEFAULT
de la variable en cuestión asignándole como valor a ella misma.

-DEFAULT &VALOR2 = '&VALOR2' ;
-SET &VAR = 'VALOR1&VALOR2' ;
-TYPE &VAR

Por último, comentar el caso de que este carácter se quiera enviar vía
javascript. En este caso resulta que el carácter en cuestión más los
que tenga detrás se interpretarán como argumentos de la URL por lo que
también necesitará un tratamiento de codificación mediante, por
ejemplo, una de las siguientes funciones javascript:

escape [http://docs.sun.com/source/816-6408-10/toplev.htm#1063743]
encodeURIComponent()
[http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp]

A continuación, algunos ejemplos:

// Códificación de caracteres. '&' se convertiría en %26
valor = escape(valor); // Con escape()
valor = encodeURIComponent(valor) ; // Con encodeURIComponent()

// Ejemplo de envío de la cadena 'AT&T' con javascript.
// La codificación final quedaría como AT%26%7CT
// que a FOCUS le llegaría correctamente.
valor = 'AT&T' ;
valor = valor.replace(/\&/gi, '\&|'); // Añadir '|' a los '&'.
valor = escape(valor); // Codificación de caracteres.
window.location.href = 'http...' + '&VAR=' + valor ;

// Ejemplo para ver la codificación desde el navegador.
javascript:document.write(escape('AT&T'.replace(/\&/gi, '\&|')));

Reply all
Reply to author
Forward
0 new messages