PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Esses caracteres são válidos para XML?


tl;dr Não, eles não são válidos, qualquer que seja a codificação está com erros ou recebeu informações de codificação erradas sobre a entrada.

55357 e 56842 são 0xD83D e 0xDE0A em hexadecimal respectivamente.

Em Unicode, eles estão em intervalos chamados "High Surrogate" e "Low Surrogate", respectivamente.

Isso significa que eles não codepoints Unicode adequados, mas usado em UTF-16 para construir um único valor Unicode que não se encaixa em 16 bits (ou seja, o Plano Multilíngue Básico).

Esses dois valores específicos decodificam para U+1F60A ROSTO SORRISO COM OLHOS SORRISOS . A entidade HTML decimal correta para isso seria 😊 .

A razão mais provável para isso é que alguma transformação que não conhece UTF-16 ou pensou este texto não é UTF-16 fez a codificação (mas deveria ter detectado que esses valores são inválidos e reportado um erro mesmo nesse caso).