Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [ATTENZIONE] inusuale interpretazione caratteri speciali

    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&apos;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 "&apos;"
    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&apos;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:

  2. #2
    ne sparo una....

    provato a svuotare la cache ?

  3. #3
    Originariamente inviato da serialkiller
    ne sparo una....

    provato a svuotare la cache ?
    Non si tratta di un problema di cache, carico le variabili sempre col metodo:

    casuale = Math.round(Math.random()*9999999999);
    this.loadVariables("news/dati.txt?"+casuale);

    che impedisce di ripescare il dati.txt dalla cache.
    Il problema è nell'interpretazione dei codici %21, %22, %23... ecc... da un player all'altro.
    Ma se non identifico la versione e la causa... l'annoso problema dei caratteri speciali per noi non avrà mai fine

  4. #4
    prova a non fare alcun urlencode della variabile, ma a passare tutto in utf8

  5. #5
    Prova a settare questa proprietà nel primo frame della _root prima di ogni azione

    System.useCodePage = true;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.