O uso de “utf8 = ✓” é preferível a “utf8 = true”?

569

Vi recentemente alguns URIs que contêm o parâmetro de consulta "utf8 = ✓". Minha primeira impressão (depois de pensar "mmm, parece legal") foi que isso poderia ser usado para detectar uma codificação de caracteres quebrada.

Então, essa é a melhor maneira de resolver possíveis problemas com a codificação de caracteres ou é apenas um desenvolvedor se divertindo com um hack?

Gary Rowe
fonte
7
Discordo. Existem esquemas que se parecem com URNs e usam parâmetros de consulta - como o Bitcoin. Os URIs não se limitam aos navegadores. Veja en.wikipedia.org/wiki/URI_scheme . Essa pergunta também pode abordar o caso geral em que a codificação de caracteres é necessária quando um navegador acessa um manipulador de protocolo.
perfil completo de Gary Rowe
3
Dê exemplos desses URLs ou não aconteceram.
22712 hakre
10
Fora do tópico, mas está bem. Aqui está minha doação pessoal URI do Bitcoin: bitcoin: 1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH? Amount = 0.5 & label = Agile% 20Stack. Observe que o esquema é essencialmente um URN com parâmetros de consulta, mas passa para um manipulador de protocolo. Esse tipo de URI provavelmente poderia se beneficiar da solução alternativa “utf8 = ✓”.
Gary Rowe
1
@ GaryRowe Então você já recebeu alguma doação desse link?
Kyralessa 18/09/18

Respostas:

814

Por padrão, versões mais antigas do IE (<= 8) enviarão dados de formulário na codificação Latin-1, se possível. Ao incluir um caractere que não pode ser expresso no latim-1, o IE é forçado a usar a codificação UTF-8 para o envio de formulários, o que simplifica vários processos de back-end, como a persistência do banco de dados.

Se o parâmetro fosse o contrário utf8=true, isso não acionaria a codificação UTF-8 nesses navegadores.

Gareth
fonte
8
@LarsViklund Eu deveria ter sido mais claro com o meu comentário. Eu quis dizer que a validação associada à codificação de caracteres é simplificada, não ignorada.
Gary Rowe
3
@Lars Correto, isso não o isenta de ter que verificar sua entrada. Mas isso não significa que ajustes de codificação só se tornam parte de sua movimentação segurança e não manchar o conceito de seu caminho "processamento padrão"
Gareth
36
Consulte também stackoverflow.com/questions/3222013/… . Aparentemente, Ruby on Rails costumava usar um personagem de boneco de neve e foi alterado para uma marca de seleção menos ambígua, mas menos engraçada.
Jack V.
11
@JohnLBevan é ignorado no final do recebimento, é feito seu trabalho forçar o navegador a enviar coisas no utf8 em vez de latin1. Eu também vi isso como ie = 💩 (que é a 'pilha de cocô' ponto de código, parece que ele não está prestando nos comentários.)
cabbey
3
@Gareth: Você pode fazer backup da declaração de que os formulários do IE <= 8 não suportam a codificação de documentos e / ou formulários?
hakre 22/10/12