Site icon Ryadel

Come effettuare URLEncode di una stringa in formato UTF8 con Visual Basic 6

How to URLEncode in UTF8 with Visual Basic 6

Visual Basic 6 (VB6) al giorno d'oggi è diventato quasi una creatura mitologica: non importa quanto tu possa cercare di eliminarlo dal proprio arsenale di strumenti di sviluppo, prima o poi torna sempre a perseguitarti, nella maggior parte dei casi sotto le sembianze di un vecchio software gestionale e/o di utilità varia che svolge un numero di funzioni magari estremamente limitato, ma comunque rilevante nell'economia aziendale. Quando questo software smette di funzionare, si rende ahimé necessario riesumare l'ambiente di sviluppo e correggere il problema.

Oggi in ufficio ci è toccato assistere a questa ennesima resurrezione, che ha riguardato un vecchio client software che ancora viene utilizzato - tra le altre cose - per svolgere alcune saltuarie request HTTP a servizi esterni parimenti obsoleti. Nello specifico, il problema era legato a una vecchia funzione  URLEncode nascosta da qualche parte del codice sorgente:

Questa funzione, che funziona bene lavorando con stringhe in formato Windows-1252, presenta non pochi problemi quando occorre produrre un risultato in formato UTF8. Ad esempio, il carattere À verrà convertito in %C0, che non sarà considerato valido a seguito di un URLDecode su un sistema UTF8.

Per correggere il problema abbiamo rapidamente messo in piedi il seguente workaround: si tratta in buona sostanza di un convertitore di formato da UTF16 a UTF8 che precede l'URLEncode vero e proprio, rendendolo compatibile con la maggior parte delle funzionalità URLDecode native dei principali framework in uso di recente (PHP, ASP.NET, JAVA e così via).

Una volta implementate le due funzioni, sarà sufficiente chiamare la prima, ovvero URLEncode_UTF8 (che include internamente la chiamata alla seconda) per ottenere una stringa URLEncoded in formato compatibile UTF-8.

Conclusione

Se vi siete imbattuti in questo articolo, è probabile che abbiate anche voi a che fare un problema del genere: ci auguriamo che questo contributo possa aiutarvi a risolverlo rapidamente.

Alla prossima!

 

Exit mobile version