Hoje fiquei surpreso ao ver que um cara invadiu o limite de 140 caracteres do Twitter. A mensagem consiste em 930 caracteres. Como isso pode ser possível?
O link direto para este tweet está aqui . Por conveniência, estou copiando a captura de tela do tweet completo abaixo:
Respostas:
A mensagem contém pontos de código substitutos Unicode que estão incorretamente codificados como UTF-8. Esse tipo de codificação imprópria também é chamado CESU-8 . Parece que algumas interfaces do Twitter aceitam os pontos de código substitutos codificados pelo CESU-8 como caracteres (para fins do limite de 140 caracteres), mas para fins de exibição, espera UTF-8 válido e essas não são sequências UTF-8 válidas. Em vez disso, exibe os 3 bytes de cada uma dessas seqüências como 3 seqüências de escape octais no estilo C de 4 caracteres cada, e cada ponto de código substituto acaba sendo exibido usando 12 caracteres.
Por exemplo, \ 355 \ 240 \ 265 \ 355 \ 263 \ 220 quando decodificado como UTF-8 com escape C, sem rejeitar substitutos, como normalmente seria feito ao decodificar UTF-8, decodifica para o par substituto U + D835 U + DCD0. Tratar esse par substituto como UTF-16, como seria feito ao decodificar o CESU-8, produz o caractere Unicode U + 1D4D0 CAPITAL A (𝓐).
Se o escape octal do estilo C for decodificado e o resultado for interpretado como CESU-8, ele será:
Aqui está como uma imagem, para aqueles sem um conjunto completo de fontes Unicode instaladas:
fonte
Cada grupo de caracteres começando com uma barra invertida e seguido por três números é uma " Sequência de escape ". Cada um deles representa um único caractere. Eles geralmente são usados para caracteres que não existem no teclado, como caracteres e símbolos que não sejam do idioma inglês.
Meu palpite é que, ao contar os caracteres, o Twitter conta cada um desses grupos como um único caractere, mas ao exibi-los no navegador, os imprime como quatro.
Atualizar:
Algumas das seqüências de escape disponíveis são "caracteres de controle". Eles dizem ao computador para executar algo como reproduzir um som de alerta ou mover o cursor para a esquerda ou direita ou para cima ou para baixo ou excluir o caractere à esquerda do cursor. Embora nenhum deles seja o último que mencionei (excluindo o personagem anterior), ele pode ter usado esse personagem para confundir o Twitter também.
Curiosamente, quando transformado em caracteres normais, é bastante repetitivo e se parece com isso:
Atualização 2:
A explicação que ele deu foi "Пишите в DM, всегда на связи)", que o Google Translate me diz é "Escreva para o DM, sempre conectado"). Não sei exatamente o que isso significa ou como isso ajuda.
fonte