diff options
Diffstat (limited to 'ext/json/tests')
| -rw-r--r-- | ext/json/tests/bug46944.phpt | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/ext/json/tests/bug46944.phpt b/ext/json/tests/bug46944.phpt new file mode 100644 index 0000000000..735de04435 --- /dev/null +++ b/ext/json/tests/bug46944.phpt @@ -0,0 +1,32 @@ +--TEST-- +Bug #46944 (json_encode() doesn't handle 3 byte utf8 correctly) +--SKIPIF-- +<?php if (!extension_loaded('json')) print 'skip'; ?> +--FILE-- +<?php + +for ($i = 1; $i <= 16; $i++) { + echo json_encode(b"aa" . (0xf0|($i >> 2)) . (0x8f|($i & 3) << 4) . "\xbf\xbdzz") . "\n"; +} + + +echo "Done\n"; +?> +--EXPECT-- +"aa\ud83f\udffdzz" +"aa\ud87f\udffdzz" +"aa\ud8bf\udffdzz" +"aa\ud8ff\udffdzz" +"aa\ud93f\udffdzz" +"aa\ud97f\udffdzz" +"aa\ud9bf\udffdzz" +"aa\ud9ff\udffdzz" +"aa\uda3f\udffdzz" +"aa\uda7f\udffdzz" +"aa\udabf\udffdzz" +"aa\udaff\udffdzz" +"aa\udb3f\udffdzz" +"aa\udb7f\udffdzz" +"aa\udbbf\udffdzz" +"aa\udbff\udffdzz" +Done |
