# Aiuto su decodifica request\_uri con caratteri giapponesi

**URL:** <https://www.ruby-forum.com/t/aiuto-su-decodifica-request-uri-con-caratteri-giapponesi/143393>\
**Category:** IT\
**Created:** [July 18, 2008, 1:05am UTC](https://www.ruby-forum.com/t/aiuto-su-decodifica-request-uri-con-caratteri-giapponesi/143393 "2008-07-18T01:05:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![gianluca\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/d78d45/32.png) [@gianluca\_t](https://www.ruby-forum.com/u/gianluca_t)\
**Post date:** [July 18, 2008, 1:05am UTC](https://www.ruby-forum.com/t/aiuto-su-decodifica-request-uri-con-caratteri-giapponesi/143393/1 "2008-07-18T01:05:35Z")

</div>

Ciao a tutti,

ho un piccolo problemino…

Nell’applicazione rails appena mandata in produzione non riesco a capire  
come decodificare i caratteri che mi arrivano in request\_uri.

Mi spiego meglio, mi vengono fatte delle chiamate del tipo:

request.request\_uri =\>  
/navigation/europe\_%E3%82%B9%E3%83%9A%E3%82%A4%E3%83%B3\_%E3%83%90%E3%83%AB%E3%82%BB%E3%83%AD%E3%83%8A\_all\_all.html

Ora io dovrei recuperare i dati relativi ai parametri che ci sono tra  
gli underscore e confrontarli con quanto ho sul db ovvero:

%E3%82%B9%E3%83%9A%E3%82%A4%E3%83%B3 sul db Ã¨ memorizzato come: ã‚¹ãƒšã‚¤ãƒ³

%E3%83%90%E3%83%AB%E3%82%BB%E3%83%AD%E3%83%8A sul db Ã¨ memorizzato come:  
ãƒãƒ«ã‚»ãƒ­ãƒŠ

Il confronto tra il valore della uri e del db fallisce, sarebbe inceve  
corretto se i caratteri avessero \x al posto del % es.

\xE3\x82\xB9\xE3\x83\x9A\xE3\x82\xA4\xE3\x83\xB3 questo nel db verrebbe  
trovato correttamente ma invece %E3%82%B9%E3%83%9A%E3%82%A4%E3%83%B3 no  
!!!

Qualcuno riesce a darmi qualche dritta ?

Grazie in anticipo !!!

---

<div class="post-metadata">

**Author:** ![gianluca\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/d78d45/32.png) [@gianluca\_t](https://www.ruby-forum.com/u/gianluca_t)\
**Post date:** [July 18, 2008, 7:20am UTC](https://www.ruby-forum.com/t/aiuto-su-decodifica-request-uri-con-caratteri-giapponesi/143393/2 "2008-07-18T07:20:49Z")

</div>

guarda se funziona con:

eval(’"’ + request.request\_uri.gsub(’%’,’\x’) + ‘"’)

---

<div class="post-metadata">

**Author:** ![gianluca\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/d78d45/32.png) [@gianluca\_t](https://www.ruby-forum.com/u/gianluca_t)\
**Post date:** [July 18, 2008, 9:45am UTC](https://www.ruby-forum.com/t/aiuto-su-decodifica-request-uri-con-caratteri-giapponesi/143393/3 "2008-07-18T09:45:34Z")

</div>

Grandioso !!!

Funziona alla grande !!!

Ma mi chiedo una cosa, come mai partono dal browser dei caratteri utf8  
=\> arrivano codificati con % ma non vengono ritrasformati in automatico  
dal framework ? Forse perchè sto lavorando sotto Rails 1.2.6 ?

Mi aspettavo infatti che si arrangiasse il framework a fare questo tipo  
di codifica/decodifica, invece la parte della decodifica me la devo  
smazzare per conto mio cambiando i % in \x, sono un po’ perplesso…

Comunque grazie per la soluzione, ha aggirato il problema alla grande.

---

<div class="post-metadata">

**Author:** ![gianluca\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/d78d45/32.png) [@gianluca\_t](https://www.ruby-forum.com/u/gianluca_t)\
**Post date:** [July 18, 2008, 1:41pm UTC](https://www.ruby-forum.com/t/aiuto-su-decodifica-request-uri-con-caratteri-giapponesi/143393/4 "2008-07-18T13:41:01Z")

</div>

Gianluca T. wrote:

> Grandioso !!!
> 
> Funziona alla grande !!!
> 
> Ma mi chiedo una cosa, come mai partono dal browser dei caratteri utf8  
> =\> arrivano codificati con % ma non vengono ritrasformati in automatico  
> dal framework ? Forse perchï¿½ sto lavorando sotto Rails 1.2.6 ?
> 
> Mi aspettavo infatti che si arrangiasse il framework a fare questo tipo  
> di codifica/decodifica, invece la parte della decodifica me la devo  
> smazzare per conto mio cambiando i % in \x, sono un po’ perplesso…
> 
> Comunque grazie per la soluzione, ha aggirato il problema alla grande.

E’ giusto, perÃ² attento, cosÃ¬ potresti essere vulnerabile:  
Sarebbe facilmente hackabile scrivendo un indirizzo contenente uno  
script dannoso nell’url, come:  
/navigation/%22%3Bexit%3B%22\_nil\_nil\_nil.html  
%22 chiude le virgolette, %3B mette un “;”, e alla fine viene eseguito  
il seguente script:  
“”;exit;""  
Un esempio banalissimo, perÃ² si possono fare cose ben peggiori

Forse sarebbe meglio fare una cosa del genere:  
decod = request.request\_uri.gsub(/%([\d\w][\d\w])/) {$1.hex.chr}  
Conviene usare poco l’eval se si tratta di usare l’input dell’utente.
