Vi segnalo un evento stranissimo che mi sta creando non pochi problemi legato probabilmente a una diversa interpretazione dei caratteri speciali da una versione del player6 a un altra (non ancora ben individuata). Dato i continui problemi legati ai caratteri speciali, mi sembra doveroso segnalarvelo, e chiedere il vostro parere a riguardo (la spiegazione è un po lunga ma semplice da capire e credo anche di interesse generale).
Ho realizzato un metodo per aggiornare alcune news; Una finestra di INPUT text con attivati i tag HTML (per permettere all'utente di inserire anche link).
L'utente inserisce il testo nella finestra, il testo è associato al nome di una variabile.
Quando si preleva il testo dalla finestra (richiamando il valore della variabile), tale valore è in formato HTML (in quando il tag era attivato).
Se ad esempio l'utente scrive nella casella: lo scopo dell'arte
richiamando il valore della variabile associata al testo si ottiene la forma in html:
<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="_sans" SIZE="10">lo scopo dell'arte</FONT></P></TEXTFORMAT>
fin qua niente di oscuro. Il testo è in html e il carattere speciale dell'apostrofo, viene sostituito con l'equivalente codifica html "'"
Il problema come sempre sorge quando si vuole memorizzare tale testo (sempre in formato html) in un file txt, per poterlo poi richiamare come variabile di flash.
Come sappiamo Flash usa il carattere & per indicare la fine del valore di una variabile e l'inizio di un altra.
Così se noi salviamo il nostro testo di prima in un file txt associato alla variabile tex, in questo modo:
tex=<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="_sans" SIZE="10">lo scopo dell'arte</FONT></P></TEXTFORMAT>
richiamando la variabile tex in una finestra di testo (con tag html ovviamente attivi), otteremo:
lo scopo dell
Falsh, una volta letto il carattere &, non sapendo se è una codifica html o cos'altro, considera la fine della variabile tex e non va oltre... di questo se ne è ampiamente parlato.
Per ovviare a questo problema, sul sito della macromedia sono indicati i codici con cui flash reinterpreta i caratteri speciali.
ad ogni carattere è associata una codifica per flash.
ad esempio:
! %21
" %22
# %23
$ %24
% %25
& %26
' %27
( %28
) %29
* %2A ...ecc
Nel lavoro che ho svolto mi interessava di non troncare il testo html salvato su txt, ma di avere comunque la codifica html.
Ho quindi provveduto a indicare alla pagina asp (che prelevava i dati da flash e scriveva il file txt), di sostituire tutti i caratteri & del testo con il codice %26.
ASP faceva il suo sporco lavoro e scriveva quindi il file txt con questo contenuto:
tex=<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="_sans" SIZE="10">lo scopo dell%26apos;arte</FONT></P></TEXTFORMAT>
Richiamando in flash la variabile tex, in una finestra di testo con tag html, ottenevo finalmente:
lo scopo dell'arte
PERFETTO!
1) flash prelevava il testo in forma integrale senza troncarlo in quanto non esisteva un &,
2) lo assegnava al valore della variabile tex
3) reinterpretava il codice %26 in &, e nella finestra di testo HTML mostrava il valore dell'HTML come se il %26 fosse stato un &..... FAnTASTICO!
Fantastico mica tanto...
Perchè su alcuni PC con un player di flash6 non ben definito (ma sempre player6), a video veniva mostrato ancora:
lo scopo dell
Cosa succede??? NON lo so di preciso, ma credo che i punti 2) e 3) di cui sopra siano invertiti!!!!
Cioè flash legge il file txt per intero ma reinterpreta il codice %26 prima di assegnarlo alla variabile tex, quando lo assegna, avendo già reinterpretato %26 in & tronca la variabile tex...
Ora non riesco a capacitarmi della cosa... su alcuni pc continuo a ottenere: lo scopo dell'arte
e su altri: lo scopo dell
Qualcuno capisce l'arcano???? :master:

Rispondi quotando