ASP.NET, C#, database MySQL e i caratteri cirillici in russo
In siti web sviluppato in multilingua può capitare di doversi imbattere in caratteri di scrittura speciali come il russo, il cinese e l’arabo.
Di base MySQL utilizza come collation il “latin” che non prevede caratteri speciali; è per questo motivo che si rende necessario cambiare tali valori di default per il salvataggio dei dati, pena il trovarsi i dati scritti con dei punti di domanda “????????”.
Di seguito i passi per modificare la collation di un database MySQL già esistente e renderlo compatibili con carattere speciali di alcune lingue straniere.
- Inserire nella stringa di connessione nel web.config il parametro “charset=utf8;” quindi risulterà un stringa simile a “server=localhost;port=3306;database=xxx;password=xxxx;charset=utf8;”
- Impostare la collation della tabella su “utf8 – utf8_unicode_ci”
- Inserire nella pagina html in cui si inseriscono i dati nelle textbox il meta <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” />
- Eseguire il comando (tramite script mysql) seguente, “alter table database_name.table_name convert to character set utf8 collate utf8_unicode_ci;”
Ora dovrebbe essere tutto pronto per salvare i dati con caratteri speciali.
Si consiglia sempre, ovviamente, di eseguire un backup del databasa prima di operare sulle tabelle.
Libreria FTP Client per Asp.NET e C#
Più di 15 anni di esperienza nella programmazione mi hanno portato a sviluppare un approccio alla programmazione del tipo “write less” grazie alla riusabilità del codice.
In quest’ottica è nata quindi una libreria che, per la quasi totalità dei miei progetti, è indispensabile: Client FTP Net Library.
Contiene una classe statica con relativi metodi statici per la gestione FTP di files e cartelle; è possibile eseguire facilmente qualsisi operazione su File Transfer Protocol come la creazione di cartella, l’upload e il download di files, la ridenominazione etc etc.
Le chiamate sono sincrone quindi bloccanti rispetto al flusso della pagina, ma possono essere incluse (grazie a tecnologie quali Ajax) in UpdatePanel o un web service e quindi diventare asincrone.
Oggi la libreria, dopo una serie di revisioni e pubblicazioni mancate, è stata finalmente pubblicata su CodeCanyon, uno degli store più importanti e conosciuti del web al costo di 10 dollari.
Se non volete perdere tempo a capire come funziona l’FTP e vi serve una libreria di facile accesso allora non potete farvela scappare.
Trovate la libreria Client FTP Net Library qui e la sua documentazione a questo indirizzo.
Libreria ToolBoox per progetti .net
Dopo pubblicazioni mancate e successive revisioni CodeCanyon (chi ha avuto a che fare con loro sa cosa vuol dire) ha finalmente pubblicato la libreria ToolBoox al quale ho lavorato negli ultimi mesi.
Si tratta di più di oltre 90 funzioni suddivise in classi statiche che racchiudono tutta la mia esperienza di programmazione sin ambino di sviluppo siti web in .net e applicazioni desktop.
A mio avviso può essere considerazione una raccolta indispensabile (da qui il nome che ricorda una cassetta degli attrezzi) per facilitare lo sviluppo e risparmiare tempo e grattacapi.
Trovate la pagina ufficiale su CodeCanyon a questo indirizzo mentre trovate la documentazione qui e la guida per installarla qui.
Il costo è stato fissato a 17$ che mi serviranno per lavorare ad altri progetti da pubblicare sempre sullo store.
LinkButton di Asp.NET che non esegue il PostBack su Internet Explorer 10
Torniamo a parlare di Internet Explorer 10 e dei problemi che spesso genera a livello di programmazione, in questo caso con Asp.NET.
Uno dei problemi in cui ci si può imbattere è quello che al click su di un LinkButton non viene generato il PostBack (cosa che invece avviene regolarmente su altri browser e che ci si aspetterebbe).
Si tratta di un bug all’interno delle definizione dei browser del Frameqwork.NET 2.0 e 4.0.
Questo problema è risolvibile in diversi modi (che trovate qui) ma quello che preferisco usare è invece quello di inserire questa riga di codice all’itnerno del Page_Load della pagina che da il problema.
Page.ClientTarget="uplevel";
E’ una forzatura forse troppo semplicistica ma risolve decisamente il problema.
Internet Explorer non scrive i cookie in un iFrame
Purtroppo Internet Explorer non è nuovo a svariati problemi che genera a programmatori e webdesginer.
Il problema che andremo a capire in questo post riguarda la non scrittura di cookie di sessione se la pagina che scrive il cookie è richiamata all’itnerno di un iframe (che non dovrebbero essere usati, ma può capiretare in situazioni molto particolari).
Questo problema è legato a alla privacy polici che Interne Explorer impostat di default a pagine che non sono accessibili direttamente dal browser (in questo caso quella nell’iframe).
Questa policy è molto restrittiva ed è necessario specificarla per esteso.
Esistono molti modi (info qui) per superare questo inconveniente, ma quella che rpeferisco è quelal di specificare direttamente da codice, nell’header della pagina, la seguente riga (l’esempio è in C# per una pagina asp.net) :
HttpContext.Current.Response.AddHeader ( "p3p",
"CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
Si tratta senza dubbio di una forzatura, ma risolve decisamente il problema in un batter d’occhio.