bug46944.phpt 680 B

1234567891011121314151617181920212223242526272829303132333435
  1. --TEST--
  2. Bug #46944 (json_encode() doesn't handle 3 byte utf8 correctly)
  3. --SKIPIF--
  4. <?php if (!extension_loaded('json')) print 'skip'; ?>
  5. --FILE--
  6. <?php
  7. for ($i = 1; $i <= 16; $i++) {
  8. $first = 0xf0 | ($i >> 2);
  9. $second = 0x8f | ($i & 3) << 4;
  10. $string = sprintf("aa%c%c\xbf\xbdzz", $first, $second);
  11. echo json_encode($string) . "\n";
  12. }
  13. echo "Done\n";
  14. ?>
  15. --EXPECT--
  16. "aa\ud83f\udffdzz"
  17. "aa\ud87f\udffdzz"
  18. "aa\ud8bf\udffdzz"
  19. "aa\ud8ff\udffdzz"
  20. "aa\ud93f\udffdzz"
  21. "aa\ud97f\udffdzz"
  22. "aa\ud9bf\udffdzz"
  23. "aa\ud9ff\udffdzz"
  24. "aa\uda3f\udffdzz"
  25. "aa\uda7f\udffdzz"
  26. "aa\udabf\udffdzz"
  27. "aa\udaff\udffdzz"
  28. "aa\udb3f\udffdzz"
  29. "aa\udb7f\udffdzz"
  30. "aa\udbbf\udffdzz"
  31. "aa\udbff\udffdzz"
  32. Done