L'encoding è una pratica necessaria e continua soprattutto all'interno del settore web.
Le funzioni in questa area risolvono tutte le problematiche legate all' encoding e al decoding di dati scritti in vari formati.
Motivi dell'encoding
Durante lo sviluppo di un programma può renderesi necessario effettuare 1 o più encoding di un stringa.
Esempio una stringa che necessita di essere visualizzata, in html ha bisogno di una codifica HTML ISO-8959-1 oppure UTF8.
E viceversa una stringa che arriva in un formato HTML ha bisogno di essere convertita in UTF8 oppure in ANSI per essere salvata in DB.
Durante il salvataggio ha bisogno di essere codifica per SQL in modo da evitare errore di sintassi nella query. (gli apici ad esempio).
Per permettere queste codifiche vengono fornite un set di funzioni che ritornarno il dato codificato/decodificato.
All'interno di questo funzioni si indica il tipo di decodifica usando una macro composta da due parti:
xx_yyyyxx è se si vuole la decodifica o codifica e il valore può essere :
- SE per l'encoding (codifica)
- SD per il decoding (decodifica)
yyyy è il tipo di decodifica, come indicato in tabella:
Macro | Note |
---|
xx_HTML | HTML ISO-8859-1 Es () Converte TUTTO <,>,& e anche i ritorni a capo in <br /> |
xx_HTMLS | HTML ISO-8859-1 Converte solo i caratteri superiori a 127 |
xx_HTML_XML | HTML ISO-8859-1 Converte solo < > & per styringe da usare con XML |
xx_ISO_LATIN1 | HTML ISO-8859-1 Converte in HTML eccetto i ritorni a capo |
xx_WTC | Wide To Char (converte perdendo il secondo byte un Widechar < > Char : Nessun encoding |
xx_ANSI | Conversione da Widechar ad ANSI (dove possibile) |
xx_UTF8 | UTF-8 usato in Xml ed adottato da Google |
xx_SQL | Mette il doppio apice dove serve -SOLO StrEncode()- |
xx_SQLSTR | Come sopra, ma ritorna il risultato "quotato" e se il valore passato è NULL, ritorna NULL senza le virgolette. |
xx_URL | %20 URL Internet |
xx_BASE64 | Base 64 |
xx_CFORMAT | Codifica in formato c o javascript aggiungendo i backslash prima di apici etc. e usa il \n \t |
Esempio
Se volete quindi una codifica in URL di una stringa potete fare in questo modo
BYTE *psz;
psz=strEncode("Test di prova",SE_URL,NULL);
printf("%s",psz);
EhFree(psz);
Il risultato sarà
Test%20di%20Prova.
Attenzione
Tutte le funzioni di encoding allocano memoria che va liberata cone EhFree