Pergunta

O método usual de URL-codifica um caractere unicode é dividi-la em códigos HH 2%. ( \ u4161 => % 41% 61 )

Mas, como é unicode distinguido ao decodificar? Como você sabe que % 41% 61 é \ u4161 vs. \ x41 \ x61 ( "AA")?

São caracteres de 8 bits, que exigem codificação, precedido por % 00 ?

Ou, é o ponto que caracteres unicode é suposto ser perdido / split?

Foi útil?

Solução

De acordo com a Wikipedia :

padrão atual

Os genéricos URI mandatos de sintaxe que novos esquemas URI que fornecem para a representação de dados de caracteres em uma obrigação URI, em efeito, representar caracteres a partir da conjunto sem reservas sem tradução, e deve converter todos os outros caracteres para bytes de acordo com UTF-8, e, em seguida, por cento-codificar aqueles valores. Esta exigência foi introduzido em Janeiro de 2005 com o publicação do RFC 3986. esquemas URI introduzido antes desta data não são afectados.

Não dirigida pela corrente especificação é o que fazer com dados de caracteres codificados. Por exemplo, em computadores, manifestos de dados de caracteres de forma codificada, em algum nível, e assim, pode ser tratado como qualquer binário de dados ou como dados de caracteres quando estar mapeados para caracteres URI. Presumivelmente, cabe ao esquema URI Especificações para explicar essa possibilidade e exigem um ou outra, mas, na prática, poucos, se houver, realmente fazer.

implementações não-padrão

Existe uma codificação não padronizado para caracteres Unicode:% uxxxx, onde xxxx é um valor Unicode como representado quatro dígitos hexadecimais. Esse comportamento não é especificado por qualquer RFC e possui foi rejeitado pelo W3C. O terceiro edição do ECMA-262 ainda inclui um função de escape (string) que usa esse sintaxe, mas também uma encodeURI (uri) função que se converte em UTF-8 e cento-codifica cada octeto.

Assim, parece que a sua inteiramente até a pessoa que escreve o método unencode ... não são divertidos padrões?

Outras dicas

O que eu sempre fiz é o primeiro UTF-8 codificar uma seqüência de caracteres Unicode para torná-lo uma série de caracteres de 8 bits antes de escapar qualquer um os com% HH.

P.S. - Eu só posso esperar as implementações não-padrão (% uxxxx) são poucos e distantes entre si

.

Uma vez que foram introduzidas URI antes unicode estava por perto, ou pelo menos em amplo uso, Eu imagino que isso é uma questão muito específica de implementação. UTF-8 codificação de seu texto, então escapar que por sons normais, como a melhor idéia, já que é totalmente compatível com qualquer ASCII / sistemas ANSI no lugar, embora você pode ter o caráter estranho ou os dois impares.

No outro extremo, a decodificação, você unescape seu texto, e obter uma string UTF-8. Se alguém usando um tentativas sistema antigo para enviar seu alguns dados em ASCII / ANSI, não há nenhum dano feito, que de (quase) UTF-8 já codificado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top