Die JSON-Spezifikation ermöglicht einen Escape-Unicode in JSON-Strings (in der Form \ uXXXX). Es erwähnt ausdrücklich einen eingeschränkten Codepunkt (ein Nicht-Zeichen) als einen gültigen Escape-Codepunkt. Bedeutet das nicht, dass Parser einen unzulässigen Unicode aus Strings erzeugen sollten, die Noncharacter und eingeschränkte Codepoints enthalten?
Ein Beispiel:
%Vor%Das Dekodieren dieses Arguments erfordert, dass Ihr Parser keinen Versuch unternimmt, den Escaped-Codepoint zu interpretieren oder dass er eine ungültige Unicode-Zeichenkette generiert. nicht wahr?
Beim Dekodieren scheint es, dass dies für das Unicode-Ersatzzeichen U+FFFD
Von der Unicode-Zeichendatenbank :
Was meinst du mit "eingeschränktem Codepunkt"? Welche Spezifikation sehen Sie, die diese Sprache verwendet? (Ich kann keine solche finden.)
Wenn Sie über die Surrogate sprechen, dann ja: JavaScript kennt fast nichts (*) über Surrogate und behandelt alle UTF-16-Codepunkte in jeder beliebigen Sequenz als gültig. JSON, das auf das beschränkt ist, was JavaScript unterstützt, macht dasselbe.
*: Der einzige Teil von JS, den ich mir vorstellen kann, ist die encodeURIComponent-Funktion, da sie die UTF-8-Codierung verwendet, bei der ein Versuch, eine ungültige Ersatzsequenz zu codieren, nicht funktionieren kann. Wenn Sie versuchen:
%Vor%Sie erhalten eine Ausnahme.
(Gah! SO scheint nicht zu erlauben, dass Zeichen außerhalb der Basic Multilingual Plane direkt gepostet werden. Tsk.)