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

    memorizzare strighe html in database

    Salve ho un problema con stringhe, html e sqllite

    per ragioni che non sto qui a spiegarvi carico delle pagina web e recuperando l' html la memorizzo in un db sqllite, il tipo di campo che utilizzo è blob.

    se memorizzo la stringa cosi come la recupero mi da errore, ma se utilizzo

    escape(stringa_html); funziona bene.

    poi se devo mostrare l' html salvato utilizzop unescape e funziona pure solo che ha un piccolo "bug"; il carattere lo riconverte con "Â "

    la soluzione potrebbe essere fare un replace di "Â " ma non mi pare una buona idea anche perchè in futuro potrebbero esserci altri caratteri che possono essere convertiti e riconvertiti in maniera sbagliata.

    avete soluzioni a riguardo?
    giuseppesorce.com
    giuseppesorce.com/blog

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    cosa utilizzi per mandare i dati a flash?

  3. #3
    in che senso mandare?


    con AIR recupero l' html come stringa dall' oggetto HtmlLoader cioè con

    [instanza HtmlLoader].window.document.documentElement.outerHTML

    escape penso che funziona con codifica utf-8 e questa codifica non va convertire e riconvertire la stringa html
    giuseppesorce.com
    giuseppesorce.com/blog

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ah, ok utilizzi AIR
    se non ricordo male ho fatto qualche prova con le funzioni di escape e quella che mi dava codifiche corrette era decodeURIComponent e il suo antagonista encodeURIComponent
    provando a immaginare la situazione, può darsi che l'errore non sia in estrazione dei dati, ma in inserimento, e che determinati caratteri creino problemi per quello quando vengono restituiti, quindi proverei ad usare entrambi i passaggi, sia unescape che decodeURIComponent

  5. #5
    allora proverò questa codifica.

    ti riporto alcuni esperimenti :

    var stringa:String= "<prova></prova>";
    var string_escape:String=escape(stringa);
    var string_unscape:String= unescape(string_escape);

    trace("stringa: "+stringa);
    trace("string_escape: "+string_escape);
    trace("string_unscape: "+string_unscape);

    in flash funziona perfettamente.

    poi...

    quando memorizzo la stringa nel db utilizzo escape, poi quando la recupero non so perchè tra i tag invece di mettere di nuovo mi mette uno spazio...

    e al momento della scrittura del file con fileStream.writeUTFBytes lo spazio viene tradotto con  .

    quindi sicuramente il "database" quando memorizza la stringa con escape convererte lo spazio html con un carattere diverso... forse uno spazio in bytes, e al momento della scrittura converte questo spazio di nuovo in stringa perchè la codifica è UTF...

    le soluzioni e workaround sono molte ma se ci fosse una soluzione più decente degli split e replace non sarebbe male...
    giuseppesorce.com
    giuseppesorce.com/blog

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    non conosco a fondo sqlite, ma per esempio in php esiste una funzione specifica che codifica correttamente le stringhe prima di inserirle nel database... bisognerebbe probabilmente creare una funzione ad hoc in flash che utilizzando le regexp sostituisca i caratteri fastidiosi a sqlite in inserimento o che, considerato che sqlite sembra non darti troppi problemi, faccia l'inverso quando si importa la stringa in flash

  7. #7
    allora ho scoperto dove comincia il "bug".

    quando leggo l' html con window.document.documentElement.outerHTML invece di darmi la la stringa compreso di mi mette uno spazio, che forse nella riscrittura da errore...

    quindi la soluzione è semplice e allo stesso tempo da ricercare nell ' estrazione della stringa html caricata...
    giuseppesorce.com
    giuseppesorce.com/blog

  8. #8
    ho una piccola soluzione...

    javascript, alias webbkit inseriscono al posto del carattere speciale un carattere spazio con codice numerico unicode 160.. sostituisco e risolvo..

    però non trovo la tavola dei codici numeri dei caratteri.. sarei curioso di sapere che carattere sia...
    giuseppesorce.com
    giuseppesorce.com/blog

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.