PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Umgang mit Unicode-Sequenzen in postgresql

\u0000 ist der eine Unicode-Codepunkt, der in einer Zeichenfolge nicht gültig ist. Ich sehe keinen anderen Weg, als den String zu desinfizieren.

Seit json nur ein String in einem bestimmten Format ist, können Sie die Standard-String-Funktionen verwenden, ohne sich Gedanken über die JSON-Struktur machen zu müssen. Ein einzeiliges Bereinigungsmittel zum Entfernen des Codepunkts wäre:

SELECT (regexp_replace(the_string::text, '\\u0000', '', 'g'))::json;

Sie können aber auch jedes beliebige Zeichen einfügen, was nützlich wäre, wenn der Null-Codepunkt als eine Art Trennzeichen verwendet wird.

Beachten Sie auch den feinen Unterschied zwischen dem, was in der Datenbank gespeichert ist, und wie es dem Benutzer präsentiert wird. Sie können den Codepunkt in einer JSON-Zeichenfolge speichern, müssen ihn jedoch zu einem anderen Zeichen vorverarbeiten, bevor Sie den Wert als json verarbeiten Datentyp.