PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Questi caratteri sono validi per XML?

tl;dr No, non sono validi, qualunque cosa abbia fatto la codifica è difettosa o ha ricevuto informazioni di codifica sbagliate sull'input.

55357 e 56842 sono rispettivamente 0xD83D e 0xDE0A in esadecimale.

In Unicode sono in intervalli chiamati rispettivamente "Surrogato alto" e "Surrogato basso".

Ciò significa che non punti di codice Unicode corretti, ma piuttosto utilizzati in UTF-16 per costruire un singolo valore Unicode che non si adatta a 16 bit (ovvero il piano multilingue di base).

Questi due valori specifici vengono decodificati in U+1F60A FACCIA SORRIDENTE CON OCCHI SORRIDENTI . L'entità HTML decimale corretta sarebbe 😊 .

La ragione più probabile di ciò è che qualche trasformazione che non conosce UTF-16 o pensa questo testo non è UTF-16 ha fatto la codifica (ma avrebbe dovuto rilevare che quei valori non sono validi e segnalare un errore anche in quel caso).