Dcodifica di entità html tipo &, ", ecc.

lunedì 12 gennaio 2009 - 23.17

danicotra Profilo | Newbie

Salve a tutti!
Avrei bisogno di sapere se esiste un sistema (una funzione di SQL Server 2005, per esempio) per prelevare dati da una tabella di DB
in cui presenti campi testuali dove sono memorizzati dati codificati con entità html (es nome: Giuseppe "Pippo" Rossi)
già decodificati (in modo da restituirli come, ad es. Giuseppe "Pippo" Rossi)

Grazie anticipate!

D.N.

alx_81 Profilo | Guru

>Salve a tutti!
Ciao!

>Avrei bisogno di sapere se esiste un sistema (una funzione di SQL Server 2005, per esempio) per prelevare dati da una tabella di DB
>in cui presenti campi testuali dove sono memorizzati dati codificati con entità html (es nome: Giuseppe "Pippo" Rossi)
>già decodificati (in modo da restituirli come, ad es. Giuseppe "Pippo" Rossi)
No, non esiste una funzione di decodifica html diretta su sql server. Credo che sarai costretto a fare la decodifica sul client. Essendo html, immagino che la risposta sarà su una pagina web, no? Quindi puoi far fare alla pagina la response corretta con l'opportuna funzione di decodifica html. Che linguaggio usi per scrivere la tua applicazione web?

>Grazie anticipate!
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

danicotra Profilo | Newbie

Ciao Alx
Sì, esatto, sto usando ASP.NET in VB per creare delle pagine web,
ho scritto precedentemente a questo link se puo' esserti id chiarimento: http://www.dotnethell.it/forum/messages.aspx?ThreadID=27880
Grazie per il tuo aiuto.

D.N.

alx_81 Profilo | Guru

>ho scritto precedentemente a questo link se puo' esserti id chiarimento:
>http://www.dotnethell.it/forum/messages.aspx?ThreadID=27880
Quindi tutto a posto con HTMLDecode no?
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

danicotra Profilo | Newbie

Be'... come dicevo nell'altro thread, sì, funziona ma...
Come faccio ad applicarlo nel caso della lista dropdown popolata per mezzo di datasourceid="nome"???
Per questo chiedevo, non c'è modo di tirarli fuori dal DB decodificati prima di associare il datasource alla lista?
E poi chissà perchè vengono memorizzati nel DB con i caratteri codificati in entità HTML...
Qualche idea illuminante?

D.N.

alx_81 Profilo | Guru

>Come faccio ad applicarlo nel caso della lista dropdown popolata
>per mezzo di datasourceid="nome"???
Io ti consiglio di fare in modo che quel datasource sia un ObjectDataSource:

In questo modo, puoi scrivere una classe che ha un metodo ipotetico List, che torna un tipo accettabile da un datasource (Ilist, Datatable, ecc).
Poi assegni il SelectMethod dell'ObjectDataSource a quel metodo creato ed il gioco è fatto.

Ti faccio un semplice esempio. Lo scenario è il seguente. Ho una pagina ASPX con un dropdownlist chiamato DdlCategorie che avrà l'elenco delle categorie di alcuni film.
I passi da seguire sono:

1 - Creo l'elemento Categoria (chiamato CategorieItem):

namespace MioProgetto.DBObject { public class CategorieItem { private byte _IDCategoria; private String _Categoria; public byte IDCategoria { get { return _IDCategoria; } set { _IDCategoria = value; } } public String Categoria { get { return _Categoria; } set { _Categoria = value; } } } }

2 - Creo il gestore dell'oggetto (Categorie) che eredita da una ulteriore classe che fa la connessione al DB (DBConnector):

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

3 - Creo l'ObjectDataSource nell'aspx:

<asp:ObjectDataSource ID="objElencoCategorie" runat="server" SelectMethod="List" TypeName="MioProgetto.DBObject.Categorie"> <!-- eventuali parametri di SelectParameters --> </asp:ObjectDataSource>

4 - Lego il controllo all'object data source tramite la proprietà DataSourceID

E dovresti essere a posto. ObjectDataSource ti permette di essere molto libero nell'implementazione.
La DBConnector può essere simile alla seguente:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Attenzione che dovrai avere nel web.config una chiave come questa:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

>E poi chissà perchè vengono memorizzati nel DB con i caratteri
>codificati in entità HTML...
Eh per sapere questo dovremmo vedere come l'applicazione salva sul database..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

danicotra Profilo | Newbie

Alx... finalmente ho il presentimento che ci siamo!!!

L'unico problema per l'applicazione "a mano" del decode (al di là della scarsa comodità), infatti, era l'impossibilità di poterlo applicare quando i dati venivano direttamente prelevati in un SqlDataSource.
Non conoscevo l'oggetto ObjectDataSource nè le sue possibili applicazioni; ma se, come mi sembra di capire, altro non è che un "generico contenitore di dati" che posso riempire a mio piacimento a partire dalla stessa query select che utilizzerei per un SqlDataSource su di un DB SQL Server 2005 (o quant'altro) e poter manipolare i dati "originali" prima di renderli accessibili mediante l'oggetto in questione, allora credo proprio che dovremmo esserci!!

Se, infine si riuscisse (ammesso sia possibile) creare una classe generica che preleva i suddetti dati a partire da una query select e il nome dei campi su cui applicare il decode che passo io tramite parametri, allora ecco che sarebbe anche molto comoda come soluzione (altrimenti dovrò definire più classi una per ogni query...)

Provo quanto prima (non posso farlo subito perchè al momento sto lavorando ad un'altra cosa che mi urge finire), ad applicare il tuo suggerimento e ti faccio sapere... Grazie per la dritta!

D.N.

alx_81 Profilo | Guru

>Non conoscevo l'oggetto ObjectDataSource nè le sue possibili
>applicazioni; ma se, come mi sembra di capire, altro non è che
>un "generico contenitore di dati" che posso riempire a mio piacimento
>a partire dalla stessa query select che utilizzerei per un SqlDataSource
>su di un DB SQL Server 2005 (o quant'altro) e poter manipolare
>i dati "originali" prima di renderli accessibili mediante l'oggetto
>in questione, allora credo proprio che dovremmo esserci!!
E' così

>Se, infine si riuscisse (ammesso sia possibile) creare una classe
>generica che preleva i suddetti dati a partire da una query select
>e il nome dei campi su cui applicare il decode che passo io tramite
>parametri, allora ecco che sarebbe anche molto comoda come soluzione
>(altrimenti dovrò definire più classi una per ogni query...)
Beh puoi farlo, basta che le query tornino sempre lo stesso tipo di resultset, oppure devi scriverti una classe che ti ritorni anche i metadati.. e non so se ti conviene. Anche per manutenibilità.. Avere una classe per ogni oggetto è molto comodo.. Anche tanti orm ragionano in quel modo. Io ad esempio ho appena scritto 20 classi molto simili tra loro nel data layer, poi un business che li consuma e l'applicazione non fa altro che chiamare il metodo di business e nemmeno si preoccupa di cosa ci sia dentro in realtà..

ok, se ritieni che ti abbia aiutato alla fine accetta la risposta così chiudiamo il thread
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

tonyexpo Profilo | Senior Member


CIao ragazzi

sono perfettamente d'accordo con Alessandro.

Giusto per cultura personale ;) per codificare o decodificare un testo in html basta usare un semplice metodo statico:
System.Web.HttpUtility.HtmlDecode(""); System.Web.HttpUtility.HtmlEncode("");

PS: Bisogna riferenziare l'assembly System.Web
Antonio Esposito
MCP, MCTS .NET 2.0 Distributed applications
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5