According to ECMA-404, 1st edition / October 2013, a JSON text is a sequence of Unicode code points. The code points that can appear in a JSON text include all code point except the control characters (the text says U+0000 to U+001F but the syntax diagram just says control character, which in Unicode 6.3 also includes U+007F to U+009F). Therefore, the code point sequence <0022, DEAD, 0022> is a valid JSON text.
However, this code point sequence cannot be represented in UTF-8, UTF-16, or UTF-32, as it is not a sequence of Unicode scalar values, and Unicode encoding forms are only defined on Unicode scalar values.
The unescaping of strings in JSON is ill-defined as there are quoted JSON strings that are the escaped version of two different sequences of Unicode code points. For example both <D834, DD1E> and <1D11E> can be represented as "\uD834\uDD1E".
Both of these appear to be bugs that should be fixed.
1/ According to ECMA-404, 1st edition / October 2013, a JSON text is a sequence
of Unicode code points. The code points that can appear in a JSON text
include all code point except the control characters (the text says U+0000
to U+001F but the syntax diagram just says control character, which in
Unicode 6.3 also includes U+007F to U+009F). Therefore, the code
point sequence <0022, DEAD, 0022> is a valid JSON text.
However, this code point sequence cannot be represented in UTF-8, UTF-16, or
UTF-32, as it is not a sequence of Unicode scalar values, and
Unicode encoding forms are only defined on Unicode scalar values.
2/ The unescaping of strings in JSON is ill-defined as there are quoted
JSON strings that are the escaped version of two different sequences of
Unicode code points. For example both <D834, DD1E> and <1D11E> can be
represented as "\uD834\uDD1E".
Both of these appear to be bugs that should be fixed.
Peter F. Patel-Schneider
However, this code point sequence cannot be represented in UTF-8, UTF-16, or UTF-32, as it is not a sequence of Unicode scalar values, and Unicode encoding forms are only defined on Unicode scalar values.
Both of these appear to be bugs that should be fixed.