Pregunta

Estoy trabajando en un sitio que el cliente ha tenido traducido al croata y esloveno. De acuerdo con nuestros patrones de URL existentes hemos generado reglas URL re-escritura que imitan el diseño de la aplicación que ha llevado a tener muchos charachters no ASCII en los URLs.

Ejemplos ¹ ¿C

Algunos enlaces se activan desde Flash usando getUrl, algunos son enlaces HTML estándar. Algunos son Response.Redirects programáticas y algunos a través de la adición de 301 códigos de estado y cabeceras de localización para la respuesta. Estoy probando en IE6, IE7 y Firefox 3 y internitmtently, los navegadores mostrar la url caracteres no latinos codificado.

š = %c5%a1
ž = %c5%be
č = %c4%8d

supongo que esto es algo que ver con IIS y la forma en que maneja Response.Redirect y AddHeader ( "Lugar ...

¿Alguien sabe de una manera de forzar IIS para codificar estos caracteres no URL o es mi mejor apuesta para sustituir estos con caracteres diacríticos no?

Gracias

¿Fue útil?

Solución

Pregúntese si realmente ellos quieren no URL codificada. ¿Qué ocurre cuando un usuario que no tiene soporte para esos caracteres instalados viene por ahí? No tengo ni idea, pero no me gustaría correr el riesgo de hacer una gran parte de mi sitio no está disponible para una gran parte de los ordenadores del mundo ...

En su lugar, se centran en ¿Por qué que necesita esta característica. Es de hacer las URLs se ven bien? Si es así, el uso de un z regular en lugar de ¼ no tendrán ningún problema. ¿Utiliza las direcciones URL de la entrada del usuario? Si es así, cifrar la URL de todo antes de analizarlo al enlace de salida, y url-decodificación antes de utilizar la entrada. Pero no use Z y otras cartas locales en las URL ...

Como nota al margen, en Suecia tenemos a, A y O, pero nadie los utiliza en las URL - utilizamos una, A y O, ya que los navegadores no soportan las direcciones URL de otro modo. Esto no sorprende a los usuarios, y muy pocos son incapaces de entender lo que las palabras que estamos apuntando a sólo porque el anillo en una falta en la url. El texto aún se mostrará correctamente en la página, a la derecha? ;)

Otros consejos

  

¿Alguien sabe de una manera de forzar a IIS no codifican URL

Usted debe cifrar la URL de. Pasar una ‘S’ en bruto (\ xc5 \ xa1) en un encabezado HTTP no es válido. Un navegador puede solucionar el error hasta ‘% C5% A1’ para ti, pero si es así el resultado no va a ser diferente a si lo acaba de escribir ‘% C5% A1’ en el primer lugar.

La inclusión de una ‘S’ en bruto en un vínculo no está mal como tal, el navegador se supone que codificar a UTF-8 y cifrar la URL de la especificación según IRI. Sin embargo, para asegurarse de que esto funciona realmente debe asegurarse de que la página con el enlace en que se sirve como codificación UTF-8. Una vez más, manual de codificación URL es probablemente más seguro.

No he tenido problemas con UTF-8 URLs, se puede enlazar a un ejemplo que no está funcionando?

  

¿tiene un enlace a una referencia donde se detalla lo que comprende una cabecera HTTP válida?

canónicamente, RFC 2616 . Sin embargo, en la práctica es un tanto inútil. El paso crítico es:

  

Palabras de * texto puede contener caracteres de juegos de caracteres distintos ISO-8859-1 sólo cuando codificada de acuerdo con las reglas de la RFC 2047.

El problema es que de acuerdo con las reglas de la RFC 2047, sólo ‘átomos’ pueden alojar a un 2,047 ‘encoded-word’. TEXTO, en la mayoría de las situaciones que se incluye en HTTP, no puede ser ideado para ser un átomo. De todos modos RFC 2047 está diseñado expresamente para los formatos de RFC 822-familia, y aunque HTTP se parece mucho a un formato de 822, no es en realidad compatible; que tiene su propia gramática básica con diferencias sutiles pero significativas. La referencia a la RFC 2047 en la especificación HTTP no da ninguna pista de cómo uno puede ser capaz de interpretar de ninguna manera consistente y es, por lo que cualquier persona que conozco puede trabajar, un error.

En cualquier caso, no hay ningún navegador real intentos de encontrar una manera de interpretar el RFC 2047 codificación en cualquier lugar en su manejo HTTP. Y mientras bytes no ASCII se definen por RFC 2616 para estar en la norma ISO-8859-1, en los navegadores de realidad pueden utilizar una serie de codificaciones (por ejemplo, UTF-8, o lo que sea la codificación por defecto del sistema es) en varios lugares al manipular HTTP cabeceras. Así que no es seguro confiar incluso en el set 8859-1 personaje! No es que eso habría dado ‘S’ de todos modos ...

Estos caracteres deben ser válidos en una dirección URL. Hice las cosas URL SEO en un sitio de viajes más grande y fue entonces cuando supe que. Cuando se fuerza diacríticos a ASCII se puede cambiar el significado de las palabras, si usted no tiene cuidado. A menudo no hay traducción, ya que sólo existen signos diacríticos en su contexto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top