Em 2010, você serviria URLs contendo caracteres UTF-8 em um grande portal da web?
Os caracteres Unicode são proibidos de acordo com o RFC nos URLs (veja aqui ). Eles teriam que ser codificados em porcentagem para serem compatíveis com os padrões.
Meu ponto principal, no entanto, é veicular os caracteres não codificados com o único objetivo de ter URLs de boa aparência, portanto, a porcentagem de codificação está fora.
Todos os principais navegadores parecem analisar bem esses URLs, independentemente do que diz a RFC. Minha impressão geral, porém, é que fica muito instável ao sair do domínio dos navegadores da web:
- URLs sendo copiadas + coladas em arquivos de texto, e-mails e até sites com codificação diferente
- Bibliotecas do cliente HTTP
- Navegadores exóticos, leitores de RSS
Minha impressão está correta de que o problema é esperado aqui e, portanto, ainda não é uma solução prática se você estiver atendendo a um público não técnico e é importante que todos os seus links funcionem corretamente, mesmo que citados e transmitidos?
Existe alguma maneira mágica de exibir URLs de boa aparência em HTML
http://www.example.com/düsseldorf?neighbourhood=Lörick
que pode ser copiado + colado com os caracteres especiais intactos, mas funciona corretamente quando reutilizado em clientes mais antigos?
Respostas:
Use codificação percentual. Navegadores modernos cuidam dos problemas de exibição e colagem e o tornam legível por humanos. Por exemplo. http://ko.wikipedia.org/wiki/ 위키 백과: 대문
Editar: quando você copia esse URL no Firefox, a área de transferência mantém o formulário codificado em porcentagem (o que geralmente é uma coisa boa), mas se você copiar apenas uma parte dele, ele não será codificado.
fonte
GET /images/logo.png HTTP/1.1
? Eles sempre codificam por cento o URL?O que Tgr disse. Fundo:
Isso não é um URI. Mas é uma IRI .
Você não pode incluir um IRI em um documento HTML4; o tipo de atributos como
href
é definido como URI e não IRI. Alguns navegadores manipularão um IRI aqui de qualquer maneira, mas não é realmente uma boa ideia.Para codificar um IRI em um URI, pegue o caminho e as partes da consulta, codifique-as por UTF-8 e codifique por cento os bytes não ASCII:
Se houver caracteres não ASCII na parte do nome do host do IRI, por exemplo.
http://例え.テスト/
, eles foram codificados usando o Punycode .Agora você tem um URI. É um URI feio. Mas a maioria dos navegadores ocultará isso para você: copie e cole na barra de endereço ou siga-o em um link e você verá a exibição com os caracteres Unicode originais. A Wikipedia usa isso há anos, por exemplo:
O único navegador cujo comportamento é imprevisível e nem sempre exibe a bonita versão do IRI é ...
...bem, você sabe.
fonte
Dependendo do seu esquema de URL, você pode tornar a parte codificada em UTF-8 "não importante". Por exemplo, se você olhar para os URLs de estouro de pilha, eles terão o seguinte formato:
No entanto, o servidor realmente não se importa se você errar a peça após o identificador, então isso também funciona:
Portanto, se você tivesse um layout como esse, poderia usar o UTF-8 na parte após o identificador e isso realmente não importaria se fosse ilegível. Claro que isso provavelmente só funciona em circunstâncias especializadas ...
fonte
Não tenho certeza se é uma boa ideia, mas, como mencionado em outros comentários e como o interpreto, muitos caracteres Unicode são válidos nos URLs HTML5 .
Por exemplo, os
href
documentos dizem http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :A definição de "URL válido" aponta para http://url.spec.whatwg.org/ , que define os pontos de código da URL como:
O termo "pontos de código de URL" é então usado em algumas partes do algoritmo de análise, por exemplo, para o estado do caminho relativo :
Além disso, o validador http://validator.w3.org/ passa por URLs como
"你好"
e não passa por URLs com caracteres como espaços"a b"
Relacionado: Quais caracteres tornam um URL inválido?
fonte
"你好"
e"a b"
) precisam ser codificados em porcentagem ao fazer a solicitação HTTP, certo?"a b"
eu tenho certeza que sim, já que o espaço não está na lista permitida acima. Para"你好"
, é definitivamente a melhor idéia para cento codificar, mas eu não sei se é apenas uma questão de "as implementações não são bons o suficiente" ou o "padrão diz isso". O padrão HTML parece permitir esses caracteres. Mas acho que isso é especificado pelo padrão HTTP, não pelo HTML. Veja também: stackoverflow.com/questions/912811/…Como todos esses comentários são verdadeiros, observe que, na medida em que a ICANN aprovou caracteres árabes (persas) e chineses para serem registrados como nome de domínio, todas as empresas fabricantes de navegadores (Microsoft, Mozilla, Apple etc.) precisam suporta Unicode em URLs sem qualquer codificação, e esses devem ser pesquisáveis pelo Google etc.
Portanto, esse problema resolverá o mais rápido possível.
fonte
Use o formulário codificado em porcentagem . Alguns computadores (principalmente antigos) executando o Windows XP, por exemplo, não suportam Unicode, mas codificações ISO. Essa é a razão pela qual os URLs codificados em porcentagem foram inventados. Além disso, se você fornecer um URL impresso em papel a um usuário, contendo caracteres que não podem ser digitados com facilidade, esse usuário poderá ter dificuldade em digitá-lo (ou simplesmente ignorá-lo). A forma codificada em porcentagem pode até ser usada em muitas das máquinas mais antigas que já existiram (embora elas não suportem a Internet, é claro).
Há uma desvantagem, pois os caracteres codificados em porcentagem são mais longos que os originais, resultando possivelmente em URLs muito longos. Mas tente ignorá-lo ou use um encurtador de URL (eu recomendaria o goo.gl nesse caso, que cria um URL com 13 caracteres). Além disso, se você não deseja se registrar em uma conta do Google, tente bit.ly (o bit.ly cria URLs um pouco mais longos, com 14 caracteres).
fonte
Para mim, esta é a maneira correta, isso só funcionou:
Isso funcionou e agora os links são exibidos corretamente:
http://newspaper.annahar.com/article/121638 -معرض - جوزف-حرب-في-غاليري-جانين-ربيز-لوحاته-الجدية-تبحث-وتكتشف-وتفرض-الاحترام
Link encontrado em:
http://www.galeriejaninerubeiz.com/newsite/news
fonte