|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
[C#] Compatibilità UrlDecode-UrlEncode
Ho dei problemi nell'urldecode/urlencode per caratteri non standard.
ad esempio ° (carattere 176) viene codificato in %c2%b0 mentre dovrebbe essere solo %b0 e chiaramente %b0 non viene decodificato correttamente. .NET usa UTF8 quindi il %c2 è corretto secondo la sua rappresentazione interna del carattere. Ma come fare per renderlo interoperabile? Non posso mica sapere sempre se dall'altra parte c'è qualcuno che usa l'UTF8 o meno e quindi capisce quello che gli invio. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Devi segliere un Enconding specifico.
Codice:
Encoding latinencoding=Encoding.GetEncoding("latin1"); string res = HttpUtility.UrlEncode("pippo@°", latinencoding); Console.WriteLine(res); Console.ReadKey(); Quote:
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
E' impossibile sapere quale encoding usa il software con cui sto dialogando. Potrei mandare una richiesta in GET ad una pagina PHP oppure ad un webservice o ad un cgi e non posso provarli tutti. Soprattutto parlando di web e in linea del tutto generale. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Beh, se si tratta esplicitamente di richieste HTTP il discorso e' piu' semplice.
La richiesta HTTP di un client fatto bene (o comunque di un modulo che in quel momento agisce da client), dovrebbe avere valorizzato il campo RFC ContentEncoding, mappato nella HttpRequest del C#, che dichiara qual e' l'encoding del body della richiesta. Io mi limiterei a rispettare questo encoding anche nella risposta, con un'adeguata speranza di essere capito.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
E un client non ha modo di conoscere l'encoding adottato dal server. Si tratta ogni volta di provare i vari encoding fino a trovare quello corretto. |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Non mi e' chiaro se stai scrivendo del codice lato client oppure lato server.
Se e' lato client non ho poi capito se il server e' un server web standard oppure se e' un server tuo Web e del quale dovrai magari sviluppare anche il codice Oppure se stai scrivendo del codice C# per il server, e non sai quale Encoding usare per le risposte.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Io gli devo passare dei dati in get quindi l'encoding è corretto per il server web che lo riceve, ma l'applicativo cgi non lo capisce. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:14.