En 2010, ¿publicaría URL que contengan caracteres UTF-8 en un gran portal web?
Los caracteres Unicode están prohibidos según el RFC en las URL (ver aquí ). Tendrían que estar codificados por ciento para cumplir con los estándares.
Sin embargo, mi punto principal es servir los caracteres no codificados con el único propósito de tener URL de aspecto agradable, por lo que la codificación porcentual está desactivada.
Todos los principales navegadores parecen estar analizando esas URL bien, no importa lo que diga el RFC. Sin embargo, mi impresión general es que se vuelve muy inestable al abandonar el dominio de los navegadores web:
- Las URL se copian y se pegan en archivos de texto, correos electrónicos e incluso sitios web con una codificación diferente
- Bibliotecas de cliente HTTP
- Navegadores exóticos, lectores RSS
¿Es correcto mi impresión de que se esperan problemas aquí y, por lo tanto, no es una solución práctica (todavía) si está sirviendo a una audiencia no técnica y es importante que todos sus enlaces funcionen correctamente incluso si se citan y se transmiten?
¿Hay alguna forma mágica de servir URL de aspecto agradable en HTML
http://www.example.com/düsseldorf?neighbourhood=Lörick
que se puede copiar + pegar con los caracteres especiales intactos, pero que funciona correctamente cuando se reutiliza en clientes antiguos?
Respuestas:
Use el porcentaje de codificación. Los navegadores modernos se ocuparán de los problemas de visualización y pegado y lo harán legible para los humanos. P.ej. http://ko.wikipedia.org/wiki/ 위키 백과: 대문
Editar: cuando copie dicha URL en Firefox, el portapapeles contendrá la forma codificada en porcentaje (que generalmente es algo bueno), pero si copia solo una parte de ella, permanecerá sin codificar.
fuente
GET /images/logo.png HTTP/1.1
? ¿Siempre codifican en porcentaje la URL?Lo que dijo Tgr. Antecedentes:
Eso no es un URI. Pero es un IRI .
No puede incluir un IRI en un documento HTML4; el tipo de atributos como
href
se define como URI y no IRI. Algunos navegadores manejarán un IRI aquí de todos modos, pero no es realmente una buena idea.Para codificar un IRI en un URI, tome la ruta y las partes de la consulta, codifíquelas con UTF-8 y luego codifique en porcentaje los bytes que no son ASCII:
Si hay caracteres no ASCII en la parte del nombre de host del IRI, por ejemplo.
http://例え.テスト/
, se han codificado utilizando Punycode en su lugar.Ahora tienes un URI. Es un URI feo. Pero la mayoría de los navegadores lo ocultarán para usted: cópielo y péguelo en la barra de direcciones o sígalo en un enlace y verá que se muestra con los caracteres Unicode originales. Wikipedia ha estado usando esto durante años, por ejemplo:
El único navegador cuyo comportamiento es impredecible y no siempre muestra la bonita versión IRI es ...
...Bueno, ya sabes.
fuente
Dependiendo de su esquema de URL, puede hacer que la parte codificada UTF-8 "no sea importante". Por ejemplo, si observa las URL de desbordamiento de pila, tienen la siguiente forma:
Sin embargo, al servidor en realidad no le importa si obtiene la parte después del identificador incorrecto, por lo que esto también funciona:
Entonces, si tuviera un diseño como este, entonces podría usar UTF-8 en la parte posterior al identificador y realmente no importaría si se distorsiona. Por supuesto, esto probablemente solo funcione en circunstancias algo especializadas ...
fuente
No estoy seguro de si es una buena idea, pero como se menciona en otros comentarios y como lo interpreto, muchos caracteres Unicode son válidos en URL HTML5 .
Por ejemplo, los
href
documentos dicen http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :Luego, la definición de "URL válida" apunta a http://url.spec.whatwg.org/ , que define los puntos de código URL como:
El término "puntos de código URL" se usa en algunas partes del algoritmo de análisis, por ejemplo, para el estado de ruta relativo :
También el validador http://validator.w3.org/ pasa por URL como
"你好"
, y no pasa por URL con caracteres como espacios"a b"
Relacionado: ¿Qué caracteres hacen que una URL no sea válida?
fuente
"你好"
y"a b"
) tienen que estar codificadas en porcentaje al hacer la solicitud HTTP ¿verdad?"a b"
estoy bastante seguro de que sí, ya que el espacio no está en la lista permitida arriba. Para"你好"
, que es sin duda la mejor idea que codifican por ciento, pero no sé si es sólo una cuestión de "las implementaciones no son lo suficientemente bueno" o el "estándar lo dice". El estándar HTML parece permitir esos caracteres. Pero creo que esto está especificado por el estándar HTTP, no HTML. Ver también: stackoverflow.com/questions/912811/…Como todos estos comentarios son ciertos, debe tener en cuenta que, en la medida en que la ICANN haya aprobado que los caracteres árabes (persas) y chinos se registren como nombre de dominio, todas las empresas de creación de navegadores (Microsoft, Mozilla, Apple, etc.) deben admite Unicode en URL sin ninguna codificación, y Google debería poder buscarlas, etc.
Entonces este problema se resolverá lo antes posible.
fuente
Use forma codificada porcentual . Algunas computadoras (principalmente antiguas) con Windows XP, por ejemplo, no admiten Unicode, sino codificaciones ISO. Esa es la razón por la cual se inventaron las URL codificadas en porcentaje. Además, si le da a un usuario una URL impresa en papel, que contiene caracteres que no se pueden escribir fácilmente, ese usuario puede tener dificultades para escribirla (o simplemente ignorarla). La forma codificada en porcentaje puede incluso usarse en muchas de las máquinas más antiguas que existieron (aunque, por supuesto, no admiten Internet).
Sin embargo, hay un inconveniente, ya que los caracteres codificados en porcentaje son más largos que los originales, lo que posiblemente da como resultado URL muy largas. Pero solo trate de ignorarlo, o use un acortador de URL (recomendaría goo.gl en este caso, que hace una URL de 13 caracteres de longitud). Además, si no desea registrarse para una cuenta de Google, pruebe bit.ly (bit.ly crea URL un poco más largas, con una longitud de 14 caracteres).
fuente
Para mí esta es la forma correcta, esto simplemente funcionó:
Esto funcionó, y ahora los enlaces se muestran correctamente:
http://newspaper.annahar.com/article/121638 -معرض - جوزف-حرب-في-غاليري-جانين-ربيز-لوحاته-الجدية-تبحث-وتكتشف-وتفرض-الاحترا-الاحتراما
Enlace encontrado en:
http://www.galeriejaninerubeiz.com/newsite/news
fuente