2012-09-27 24 views
8

que tienen un vínculo con este aspecto (es un poco feo porque es URL)URL codificada con corchetes. comportamiento diferente en Chrome/Firefox/IE

<a href="/items?fc%5B%5D=12345&amp;fc%5B%5D=56789&amp;utf8=%E2%9C%93">foo</a> 

a ser un poco clara, se URL codificada y se traduce en

<a href="/items?fc[]=12345&fc[]=56789&utf8=✓">foo</a> 

Cuando se envía el formulario, la URL de destino se ve diferente en diferentes navegadores:

en Firefox, parece que desea:

http://mydomain/items?fc[]=12345&fc[]=56789&utf8=✓ 

En Chrome, los corchetes se muestran con codificación URL, (que da muy feo y no profesionales direcciones mirando al utilizar muchos de ellos).

http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=✓ 

En IE9 (o más) todo se mostraron codificación URL:

http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=%E2%9C%93 

puedo vivir con el "UTF-8 = ..." parte, ya que es sólo un problema en el IE. Pero ninguno de los navegadores tiene ningún problema con el manejo cuando corchetes se escriben de forma explícita en la URL, por lo que no entiendo por qué Chrome e IE, Firefox, pero no tiene que mostrar los soportes con codificación URL.

Dado que el código HTML de la forma es igual en todos los navegadores, que supongo que es tiene que ver con los navegadores, y no con el sitio (un sitio de Ruby on Rails en este caso)

EDIT: Así que para aclarar mis preguntas reales: ¿Por qué es diferente? ¿Hay alguna manera de que se vea bien al menos en Chrome? Puede ser feo-fijado no escapando de URL en href = "..." pero supongo que está en contra de las reglas de codificación de URL?

+0

¿cuál es su problema? que es feo? –

+0

sí :) ¡He aclarado las preguntas un poco ahora! – foolo

+0

¿ha considerado los resultados POSTing? –

Respuesta

1

Como desea compartir estos enlaces (con statefulness) supongo que usted está anticipando sus enlaces serán compartidos, vinculado desde páginas web, copiado, enviado por correo electrónico, etc.

Es probable que incluso fuera del navegador (digamos, donde se copian sus enlaces en otras páginas, en correos electrónicos, etc.) que se producirá alguna codificación. Puede que tengas que aceptar feo aparecerá en algún lado si tienes que usar esos caracteres.

-1

Por favor, corríjanme si me equivoco, pero de una manera que parecía haber trabajado alrededor de este problema es por la captura de los valores a un formulario y transformarlos a GET con PHP. Así, por ejemplo, se puede usar un formulario con un método POST, así:

<form action="" method="post"> 
<input type="text" name="fc[]" /> 
<input type="submit" value="Submit" /> 
</form> 

A continuación, coger los valores se forma después de la presentación, crear una consulta GET con PHP y redirigir al usuario:

<?php 
if($_POST['fc']) 
    header('Location: ?'.urldecode(http_build_query($_POST))); 
?> 

Esto es para escenarios específicos, por supuesto (y tal vez un poco fuera del alcance de la pregunta de OP), pero parece funcionar bien en mi caso.

Cuestiones relacionadas