--TEST-- Exhaustive test of CP932 encoding verification and conversion (including 'SJIS-win' variant) --EXTENSIONS-- mbstring --SKIPIF-- --FILE-- $unicode) testValidString($cp932, $unicode, 'CP932', 'UTF-16BE', false); echo "CP932 verification and conversion works on all valid characters\n"; testAllInvalidChars($invalidChars, $validChars, 'CP932', 'UTF-16BE', "\x00%"); echo "CP932 verification and conversion works on all invalid characters\n"; convertAllInvalidChars($invalidCodepoints, $fromUnicode, 'UTF-16BE', 'CP932', '%'); echo "Unicode -> CP932 conversion works on all invalid codepoints\n"; /* Now test 'SJIS-win' variant of CP932, which is really CP932 but with * two different mappings * Instead of mapping U+00A5 and U+203E to the single bytes 0x5C and 07E * (which have conflicting uses), 'SJIS-win' maps them to appropriate * JIS X 0208 characters */ /* U+00A5 is YEN SIGN; convert to FULLWIDTH YEN SIGN */ $fromUnicode["\x00\xA5"] = "\x81\x8F"; /* U+203E is OVERLINE; convert to JIS X 0208 FULLWIDTH MACRON */ $fromUnicode["\x20\x3E"] = "\x81\x50"; testAllValidChars($validChars, 'SJIS-win', 'UTF-16BE'); foreach ($nonInvertible as $cp932 => $unicode) testValidString($cp932, $unicode, 'SJIS-win', 'UTF-16BE', false); echo "SJIS-win verification and conversion works on all valid characters\n"; testAllInvalidChars($invalidChars, $validChars, 'SJIS-win', 'UTF-16BE', "\x00%"); echo "SJIS-win verification and conversion works on all invalid characters\n"; convertAllInvalidChars($invalidCodepoints, $fromUnicode, 'UTF-16BE', 'SJIS-win', '%'); echo "Unicode -> SJIS-win conversion works on all invalid codepoints\n"; // Test "long" illegal character markers mb_substitute_character("long"); convertInvalidString("\x80", "%", "CP932", "UTF-8"); convertInvalidString("\xEA", "%", "CP932", "UTF-8"); convertInvalidString("\x81\x20", "%", "CP932", "UTF-8"); convertInvalidString("\xEA\xA9", "%", "CP932", "UTF-8"); convertInvalidString("\x80", "%", "SJIS-win", "UTF-8"); convertInvalidString("\xEA", "%", "SJIS-win", "UTF-8"); convertInvalidString("\x81\x20", "%", "SJIS-win", "UTF-8"); convertInvalidString("\xEA\xA9", "%", "SJIS-win", "UTF-8"); echo "Done!\n"; ?> --EXPECT-- CP932 verification and conversion works on all valid characters CP932 verification and conversion works on all invalid characters Unicode -> CP932 conversion works on all invalid codepoints SJIS-win verification and conversion works on all valid characters SJIS-win verification and conversion works on all invalid characters Unicode -> SJIS-win conversion works on all invalid codepoints Done!