Reserved character stripping will not be tested, because your PHP install does not support it.
| Name | Status | Input | Expected | Got |
|---|---|---|---|---|
| [PHP] overlong encoding byte C0 | pass | hello[C0]world | helloworld | helloworld |
| [PHP] overlong encoding byte C1 | pass | hello[C1]world | helloworld | helloworld |
| [PHP] start of 4 byte code point over U+10FFFF | pass | hello[F5]world | helloworld | helloworld |
| [PHP] start of 4 byte code point over U+10FFFF | pass | hello[F6]world | helloworld | helloworld |
| [PHP] start of 4 byte code point over U+10FFFF | pass | hello[F7]world | helloworld | helloworld |
| [PHP] start of deprecated 5 byte sequence | pass | hello[F8]world | helloworld | helloworld |
| [PHP] start of deprecated 5 byte sequence | pass | hello[F9]world | helloworld | helloworld |
| [PHP] start of deprecated 5 byte sequence | pass | hello[FA]world | helloworld | helloworld |
| [PHP] start of deprecated 5 byte sequence | pass | hello[FB]world | helloworld | helloworld |
| [PHP] start of deprecated 6 byte sequence | pass | hello[FC]world | helloworld | helloworld |
| [PHP] start of deprecated 6 byte sequence | pass | hello[FD]world | helloworld | helloworld |
| [PHP] invalid byte FE | pass | hello[FE]world | helloworld | helloworld |
| [PHP] invalid byte FF | pass | hello[FF]world | helloworld | helloworld |
| [PHP] lone trail | pass | a[BF]b | ab | ab |
| [PHP] 2 lone trails | pass | a[BF][BF]b | ab | ab |
| [PHP] 3 lone trails | pass | a[BF][BF][BF]b | ab | ab |
| [PHP] 0 leader w/ 0 trail | pass | aAb | aAb | aAb |
| [PHP] 0 leader w/ 1 trail | pass | aA[BF]b | aAb | aAb |
| [PHP] 0 leader w/ 2 trail | pass | aA[BF][BF]b | aAb | aAb |
| [PHP] 1 leader w/ 0 trail | pass | a[C2]b | ab | ab |
| [PHP] 1 leader w/ 1 trail | pass | a[C2][BF]b | a[C2][BF]b | a[C2][BF]b |
| [PHP] 1 leader w/ 2 trail | pass | a[C2][BF][BF]b | a[C2][BF]b | a[C2][BF]b |
| [PHP] 2 leader w/ 0 trail | pass | a[E1]b | ab | ab |
| [PHP] 2 leader w/ 1 trail | pass | a[E1][80]b | ab | ab |
| [PHP] 2 leader w/ 2 trail | pass | a[E1][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [PHP] 2 leader w/ 3 trail | pass | a[E1][80][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [PHP] 3 leader w/ 0 trail | pass | a[F0]b | ab | ab |
| [PHP] 3 leader w/ 1 trail | pass | a[F0][A0]b | ab | ab |
| [PHP] 3 leader w/ 2 trail | pass | a[F0][A0][80]b | ab | ab |
| [PHP] 3 leader w/ 3 trail | pass | a[F0][A0][80][80]b | a[F0][A0][80][80]b | a[F0][A0][80][80]b |
| [PHP] 3 leader w/ 4 trail | pass | a[F0][A0][80][80][80]b | a[F0][A0][80][80]b | a[F0][A0][80][80]b |
| [PHP] 2L1 1T | pass | a[C2][C2][BF]b | a[C2][BF]b | a[C2][BF]b |
| [PHP] 2L1 2T | pass | a[C2][C2][BF][BF]b | a[C2][BF]b | a[C2][BF]b |
| [PHP] 2L2 2T | pass | a[E1][E1][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [PHP] 2L2 3T | pass | a[E1][E1][80][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [PHP] 3L2 3T | pass | a[E1][E1][E1][80][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [PHP] L2 T 2L2 3T | pass | a[E1][80][E1][E1][80][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [PHP] 2L1 1T at egdes | pass | [C2][C2][BF] | [C2][BF] | [C2][BF] |
| [PHP] 2L1 2T at egdes | pass | [C2][C2][BF][BF] | [C2][BF] | [C2][BF] |
| [PHP] 2L2 2T at egdes | pass | [E1][E1][80][80] | [E1][80][80] | [E1][80][80] |
| [PHP] 2L2 3T at egdes | pass | [E1][E1][80][80][80] | [E1][80][80] | [E1][80][80] |
| [PHP] 3L2 3T at egdes | pass | [E1][E1][E1][80][80][80] | [E1][80][80] | [E1][80][80] |
| [PHP] L2 T 2L2 3T at egdes | pass | [E1][80][E1][E1][80][80][80] | [E1][80][80] | [E1][80][80] |
| [PHP] lowest out of range 4-byte starting with F4 - U+110000 | pass | a[F4][90][80][80]b | ab | ab |
| [PHP] highest out of range 4-byte starting with F4 - U+13FFFF | pass | a[F4][BF][BF][BF]b | ab | ab |
| [PHP] lowest out of range 4-byte starting over F4 - U+140000 | pass | a[F5][80][80][80]b | ab | ab |
| [PHP] highest out of range 4-byte starting over F4 - U+1FFFFF | pass | a[F7][BF][BF][BF]b | ab | ab |
| [PHP] lowest 5-byte U+200000 | pass | a[F8][88][80][80][80]b | ab | ab |
| [PHP] highest 5-byte U+3FFFFFF | pass | a[FB][BF][BF][BF][BF]b | ab | ab |
| [PHP] lowest 6-byte starting with FC - U+4000000 | pass | a[FC][84][80][80][80][80]b | ab | ab |
| [PHP] highest 6-byte starting with FC - U+3FFFFFFF | pass | a[FC][BF][BF][BF][BF][BF]b | ab | ab |
| [PHP] lowest 6-byte starting with FD - U+40000000 | pass | a[FD][80][80][80][80][80]b | ab | ab |
| [PHP] highest 6-byte starting with FD - U+7FFFFFFF | pass | a[FD][BF][BF][BF][BF][BF]b | ab | ab |
| [PHP] lowest overlong 2-byte - U+0000 | pass | a[C0][80]b | ab | ab |
| [PHP] highest overlong 2-byte - U+007F | pass | a[C1][BF]b | ab | ab |
| [PHP] lowest valid 2-byte - U+00A0 | pass | a[C2][A0]b | a[C2][A0]b | a[C2][A0]b |
| [PHP] highest valid 2-byte - U+07FA | pass | a[DF][BA]b | a[DF][BA]b | a[DF][BA]b |
| [PHP] highest possible 2-byte - U+07FF | pass | a[DF][BF]b | a[DF][BF]b | a[DF][BF]b |
| [PHP] lowest overlong 3-byte - U+0000 | pass | a[E0][80][80]b | ab | ab |
| [PHP] highest overlong 3-byte - U+07FF | pass | a[E0][9F][BF]b | ab | ab |
| [PHP] lowest valid 3-byte - U+0800 | pass | a[E0][A0][80]b | a[E0][A0][80]b | a[E0][A0][80]b |
| [PHP] highest valid 3-byte - U+FFFB | pass | a[EF][BF][BB]b | a[EF][BF][BB]b | a[EF][BF][BB]b |
| [PHP] lowest overlong 4-byte - U+0000 | pass | a[F0][80][80][80]b | ab | ab |
| [PHP] highest overlong 4-byte - U+FFFB | pass | a[F0][8F][BF][BB]b | ab | ab |
| [PHP] lowest valid 4-byte - U+10000 | pass | a[F0][90][80][80]b | a[F0][90][80][80]b | a[F0][90][80][80]b |
| [PHP] highest valid 4-byte - U+10FFFD | pass | a[F4][8F][BF][BD]b | a[F4][8F][BF][BD]b | a[F4][8F][BF][BD]b |
| [PHP] lowest overlong 5-byte - U+0000 | pass | a[F8][80][80][80][80]b | ab | ab |
| [PHP] highest overlong 5-byte - U+1FFFFD | pass | a[F8][87][BF][BF][BD]b | ab | ab |
| [PHP] lowest overlong 6-byte - U+0000 | pass | a[FC][80][80][80][80][80]b | ab | ab |
| [PHP] highest overlong 6-byte - U+3FFFFFF | pass | a[FC][83][BF][BF][BF][BF]b | ab | ab |
| [PHP] Latin-1 fallback 0x76 | pass | v | v | v |
| [PHP] Latin-1 fallback 0xEB | pass | [EB] | [C3][AB] | [C3][AB] |
| [PHP] Latin-1 fallback word | pass | H[EB]llo | H[C3][AB]llo | H[C3][AB]llo |
| [PHP] Unknown sanitize mode exception | pass | sanitize("hello\xC0world", "str"); | thrown | thrown |
| [PHP] ISO-8859-1 0x76 -> U+0076 | pass | v | v | v |
| [PHP] ISO-8859-1 0xE6 -> U+00E6 | pass | [E6] | [C3][A6] | [C3][A6] |
| [mbstring] overlong encoding byte C0 | pass | hello[C0]world | helloworld | helloworld |
| [mbstring] overlong encoding byte C1 | pass | hello[C1]world | helloworld | helloworld |
| [mbstring] start of 4 byte code point over U+10FFFF | pass | hello[F5]world | helloworld | helloworld |
| [mbstring] start of 4 byte code point over U+10FFFF | pass | hello[F6]world | helloworld | helloworld |
| [mbstring] start of 4 byte code point over U+10FFFF | pass | hello[F7]world | helloworld | helloworld |
| [mbstring] start of deprecated 5 byte sequence | pass | hello[F8]world | helloworld | helloworld |
| [mbstring] start of deprecated 5 byte sequence | pass | hello[F9]world | helloworld | helloworld |
| [mbstring] start of deprecated 5 byte sequence | pass | hello[FA]world | helloworld | helloworld |
| [mbstring] start of deprecated 5 byte sequence | pass | hello[FB]world | helloworld | helloworld |
| [mbstring] start of deprecated 6 byte sequence | pass | hello[FC]world | helloworld | helloworld |
| [mbstring] start of deprecated 6 byte sequence | pass | hello[FD]world | helloworld | helloworld |
| [mbstring] invalid byte FE | pass | hello[FE]world | helloworld | helloworld |
| [mbstring] invalid byte FF | pass | hello[FF]world | helloworld | helloworld |
| [mbstring] lone trail | fail | a[BF]b | ab | a?b |
| [mbstring] 2 lone trails | fail | a[BF][BF]b | ab | a??b |
| [mbstring] 3 lone trails | fail | a[BF][BF][BF]b | ab | a???b |
| [mbstring] 0 leader w/ 0 trail | pass | aAb | aAb | aAb |
| [mbstring] 0 leader w/ 1 trail | fail | aA[BF]b | aAb | aA?b |
| [mbstring] 0 leader w/ 2 trail | fail | aA[BF][BF]b | aAb | aA??b |
| [mbstring] 1 leader w/ 0 trail | fail | a[C2]b | ab | a?b |
| [mbstring] 1 leader w/ 1 trail | pass | a[C2][BF]b | a[C2][BF]b | a[C2][BF]b |
| [mbstring] 1 leader w/ 2 trail | fail | a[C2][BF][BF]b | a[C2][BF]b | a[C2][BF]?b |
| [mbstring] 2 leader w/ 0 trail | fail | a[E1]b | ab | a?b |
| [mbstring] 2 leader w/ 1 trail | fail | a[E1][80]b | ab | a?b |
| [mbstring] 2 leader w/ 2 trail | pass | a[E1][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [mbstring] 2 leader w/ 3 trail | fail | a[E1][80][80][80]b | a[E1][80][80]b | a[E1][80][80]?b |
| [mbstring] 3 leader w/ 0 trail | fail | a[F0]b | ab | a?b |
| [mbstring] 3 leader w/ 1 trail | fail | a[F0][A0]b | ab | a?b |
| [mbstring] 3 leader w/ 2 trail | fail | a[F0][A0][80]b | ab | a?b |
| [mbstring] 3 leader w/ 3 trail | pass | a[F0][A0][80][80]b | a[F0][A0][80][80]b | a[F0][A0][80][80]b |
| [mbstring] 3 leader w/ 4 trail | fail | a[F0][A0][80][80][80]b | a[F0][A0][80][80]b | a[F0][A0][80][80]?b |
| [mbstring] 2L1 1T | fail | a[C2][C2][BF]b | a[C2][BF]b | a?[C2][BF]b |
| [mbstring] 2L1 2T | fail | a[C2][C2][BF][BF]b | a[C2][BF]b | a?[C2][BF]?b |
| [mbstring] 2L2 2T | fail | a[E1][E1][80][80]b | a[E1][80][80]b | a?[E1][80][80]b |
| [mbstring] 2L2 3T | fail | a[E1][E1][80][80][80]b | a[E1][80][80]b | a?[E1][80][80]?b |
| [mbstring] 3L2 3T | fail | a[E1][E1][E1][80][80][80]b | a[E1][80][80]b | a??[E1][80][80]?b |
| [mbstring] L2 T 2L2 3T | fail | a[E1][80][E1][E1][80][80][80]b | a[E1][80][80]b | a??[E1][80][80]?b |
| [mbstring] 2L1 1T at egdes | fail | [C2][C2][BF] | [C2][BF] | ?[C2][BF] |
| [mbstring] 2L1 2T at egdes | fail | [C2][C2][BF][BF] | [C2][BF] | ?[C2][BF]? |
| [mbstring] 2L2 2T at egdes | fail | [E1][E1][80][80] | [E1][80][80] | ?[E1][80][80] |
| [mbstring] 2L2 3T at egdes | fail | [E1][E1][80][80][80] | [E1][80][80] | ?[E1][80][80]? |
| [mbstring] 3L2 3T at egdes | fail | [E1][E1][E1][80][80][80] | [E1][80][80] | ??[E1][80][80]? |
| [mbstring] L2 T 2L2 3T at egdes | fail | [E1][80][E1][E1][80][80][80] | [E1][80][80] | ??[E1][80][80]? |
| [mbstring] lowest out of range 4-byte starting with F4 - U+110000 | fail | a[F4][90][80][80]b | ab | a????b |
| [mbstring] highest out of range 4-byte starting with F4 - U+13FFFF | fail | a[F4][BF][BF][BF]b | ab | a????b |
| [mbstring] lowest out of range 4-byte starting over F4 - U+140000 | fail | a[F5][80][80][80]b | ab | a???b |
| [mbstring] highest out of range 4-byte starting over F4 - U+1FFFFF | fail | a[F7][BF][BF][BF]b | ab | a???b |
| [mbstring] lowest 5-byte U+200000 | fail | a[F8][88][80][80][80]b | ab | a????b |
| [mbstring] highest 5-byte U+3FFFFFF | fail | a[FB][BF][BF][BF][BF]b | ab | a????b |
| [mbstring] lowest 6-byte starting with FC - U+4000000 | fail | a[FC][84][80][80][80][80]b | ab | a?????b |
| [mbstring] highest 6-byte starting with FC - U+3FFFFFFF | fail | a[FC][BF][BF][BF][BF][BF]b | ab | a?????b |
| [mbstring] lowest 6-byte starting with FD - U+40000000 | fail | a[FD][80][80][80][80][80]b | ab | a?????b |
| [mbstring] highest 6-byte starting with FD - U+7FFFFFFF | fail | a[FD][BF][BF][BF][BF][BF]b | ab | a?????b |
| [mbstring] lowest overlong 2-byte - U+0000 | fail | a[C0][80]b | ab | a?b |
| [mbstring] highest overlong 2-byte - U+007F | fail | a[C1][BF]b | ab | a?b |
| [mbstring] lowest valid 2-byte - U+00A0 | pass | a[C2][A0]b | a[C2][A0]b | a[C2][A0]b |
| [mbstring] highest valid 2-byte - U+07FA | pass | a[DF][BA]b | a[DF][BA]b | a[DF][BA]b |
| [mbstring] highest possible 2-byte - U+07FF | pass | a[DF][BF]b | a[DF][BF]b | a[DF][BF]b |
| [mbstring] lowest overlong 3-byte - U+0000 | pass | a[E0][80][80]b | ab | ab |
| [mbstring] highest overlong 3-byte - U+07FF | pass | a[E0][9F][BF]b | ab | ab |
| [mbstring] lowest valid 3-byte - U+0800 | pass | a[E0][A0][80]b | a[E0][A0][80]b | a[E0][A0][80]b |
| [mbstring] highest valid 3-byte - U+FFFB | pass | a[EF][BF][BB]b | a[EF][BF][BB]b | a[EF][BF][BB]b |
| [mbstring] lowest overlong 4-byte - U+0000 | pass | a[F0][80][80][80]b | ab | ab |
| [mbstring] highest overlong 4-byte - U+FFFB | pass | a[F0][8F][BF][BB]b | ab | ab |
| [mbstring] lowest valid 4-byte - U+10000 | pass | a[F0][90][80][80]b | a[F0][90][80][80]b | a[F0][90][80][80]b |
| [mbstring] highest valid 4-byte - U+10FFFD | pass | a[F4][8F][BF][BD]b | a[F4][8F][BF][BD]b | a[F4][8F][BF][BD]b |
| [mbstring] lowest overlong 5-byte - U+0000 | fail | a[F8][80][80][80][80]b | ab | a????b |
| [mbstring] highest overlong 5-byte - U+1FFFFD | fail | a[F8][87][BF][BF][BD]b | ab | a????b |
| [mbstring] lowest overlong 6-byte - U+0000 | fail | a[FC][80][80][80][80][80]b | ab | a?????b |
| [mbstring] highest overlong 6-byte - U+3FFFFFF | fail | a[FC][83][BF][BF][BF][BF]b | ab | a?????b |
| [mbstring] Latin-1 fallback 0x76 | pass | v | v | v |
| [mbstring] Latin-1 fallback 0xEB | pass | [EB] | [C3][AB] | [C3][AB] |
| [mbstring] Latin-1 fallback word | pass | H[EB]llo | H[C3][AB]llo | H[C3][AB]llo |
| [mbstring] Unknown sanitize mode exception | pass | sanitize("hello\xC0world", "str"); | thrown | thrown |
| [mbstring] SJIS 0x76 -> U+0076 | pass | v | v | v |
| [mbstring] SJIS 0xA6 -> U+FF66 | pass | [A6] | [EF][BD][A6] | [EF][BD][A6] |
| [mbstring] SJIS 0x8140 -> U+3000 | pass | [81]@ | [E3][80][80] | [E3][80][80] |
| [mbstring] SJIS 0x82DC -> U+307E | pass | [82][DC] | [E3][81][BE] | [E3][81][BE] |
| [mbstring] SJIS 0x8CCC -> U+6545 | pass | [8C][CC] | [E6][95][85] | [E6][95][85] |
| [mbstring] ISO-2022-JP US-ASCII 0x76 -> U+0076 | pass | v | v | v |
| [mbstring] ISO-2022-JP JIS-X-201 0xA6 -> U+FF66 | pass | [A6] | [EF][BD][A6] | [EF][BD][A6] |
| [mbstring] ISO-2022-JP JIS-X-201 0xBE -> U+FF7E | pass | [BE] | [EF][BD][BE] | [EF][BD][BE] |
| [mbstring] ISO-2022-JP JIS-X-208-1978 0x214A -> U+FF08 | pass | [1B]$@!J | [EF][BC][88] | [EF][BC][88] |
| [mbstring] ISO-2022-JP JIS-X-208-1978 0x3C2D -> U+8F9E | pass | [1B]$@<- | [E8][BE][9E] | [E8][BE][9E] |
| [mbstring] ISO-2022-JP JIS-X-208-1983 0x214A -> U+FF08 | pass | [1B]$B!J | [EF][BC][88] | [EF][BC][88] |
| [mbstring] ISO-2022-JP JIS-X-208-1983 0x3C2D -> U+8F9E | pass | [1B]$B<- | [E8][BE][9E] | [E8][BE][9E] |
| [mbstring] EUC-JP US-ASCII 0x76 -> U+0076 | pass | v | v | v |
| [mbstring] EUC-JP JIS-X-201 0xB6 -> U+FF76 | pass | [8E][B6] | [EF][BD][B6] | [EF][BD][B6] |
| [mbstring] EUC-JP JIS-X-201 0xDE -> U+FF9E | pass | [8E][DE] | [EF][BE][9E] | [EF][BE][9E] |
| [mbstring] EUC-JP JIS-X-0208 0x2133 -> U+30FD | pass | [A1][B3] | [E3][83][BD] | [E3][83][BD] |
| [mbstring] EUC-JP JIS-X-0208 0x3053 -> U+5C09 | pass | [B0][D3] | [E5][B0][89] | [E5][B0][89] |
| [mbstring] EUC-JP JIS-X-0212 0x3031 - U+4E44 | pass | [8F][B0][B1] | [E4][B9][84] | [E4][B9][84] |
| [mbstring] EUC-JP JIS-X-0212 0x4258 - U+66A4 | pass | [8F][C2][D8] | [E6][9A][A4] | [E6][9A][A4] |
| [mbstring] ISO-8859-1 0x76 -> U+0076 | pass | v | v | v |
| [mbstring] ISO-8859-1 0xE6 -> U+00E6 | pass | [E6] | [C3][A6] | [C3][A6] |
| [mbstring] ISO-8859-2 0x76 -> U+0076 | pass | v | v | v |
| [mbstring] ISO-8859-2 0xE6 -> U+0107 | pass | [E6] | [C4][87] | [C4][87] |
| [mbstring] ISO-8859-15 0x76 -> U+0076 | pass | v | v | v |
| [mbstring] ISO-8859-15 0xBE -> U+0178 | pass | [BE] | [C5][B8] | [C5][B8] |
| [iconv] overlong encoding byte C0 | pass | hello[C0]world | helloworld | helloworld |
| [iconv] overlong encoding byte C1 | pass | hello[C1]world | helloworld | helloworld |
| [iconv] start of 4 byte code point over U+10FFFF | pass | hello[F5]world | helloworld | helloworld |
| [iconv] start of 4 byte code point over U+10FFFF | pass | hello[F6]world | helloworld | helloworld |
| [iconv] start of 4 byte code point over U+10FFFF | pass | hello[F7]world | helloworld | helloworld |
| [iconv] start of deprecated 5 byte sequence | pass | hello[F8]world | helloworld | helloworld |
| [iconv] start of deprecated 5 byte sequence | pass | hello[F9]world | helloworld | helloworld |
| [iconv] start of deprecated 5 byte sequence | pass | hello[FA]world | helloworld | helloworld |
| [iconv] start of deprecated 5 byte sequence | pass | hello[FB]world | helloworld | helloworld |
| [iconv] start of deprecated 6 byte sequence | pass | hello[FC]world | helloworld | helloworld |
| [iconv] start of deprecated 6 byte sequence | pass | hello[FD]world | helloworld | helloworld |
| [iconv] invalid byte FE | pass | hello[FE]world | helloworld | helloworld |
| [iconv] invalid byte FF | pass | hello[FF]world | helloworld | helloworld |
| [iconv] lone trail | pass | a[BF]b | ab | ab |
| [iconv] 2 lone trails | pass | a[BF][BF]b | ab | ab |
| [iconv] 3 lone trails | pass | a[BF][BF][BF]b | ab | ab |
| [iconv] 0 leader w/ 0 trail | pass | aAb | aAb | aAb |
| [iconv] 0 leader w/ 1 trail | pass | aA[BF]b | aAb | aAb |
| [iconv] 0 leader w/ 2 trail | pass | aA[BF][BF]b | aAb | aAb |
| [iconv] 1 leader w/ 0 trail | pass | a[C2]b | ab | ab |
| [iconv] 1 leader w/ 1 trail | pass | a[C2][BF]b | a[C2][BF]b | a[C2][BF]b |
| [iconv] 1 leader w/ 2 trail | pass | a[C2][BF][BF]b | a[C2][BF]b | a[C2][BF]b |
| [iconv] 2 leader w/ 0 trail | pass | a[E1]b | ab | ab |
| [iconv] 2 leader w/ 1 trail | pass | a[E1][80]b | ab | ab |
| [iconv] 2 leader w/ 2 trail | pass | a[E1][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [iconv] 2 leader w/ 3 trail | pass | a[E1][80][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [iconv] 3 leader w/ 0 trail | pass | a[F0]b | ab | ab |
| [iconv] 3 leader w/ 1 trail | pass | a[F0][A0]b | ab | ab |
| [iconv] 3 leader w/ 2 trail | pass | a[F0][A0][80]b | ab | ab |
| [iconv] 3 leader w/ 3 trail | pass | a[F0][A0][80][80]b | a[F0][A0][80][80]b | a[F0][A0][80][80]b |
| [iconv] 3 leader w/ 4 trail | pass | a[F0][A0][80][80][80]b | a[F0][A0][80][80]b | a[F0][A0][80][80]b |
| [iconv] 2L1 1T | pass | a[C2][C2][BF]b | a[C2][BF]b | a[C2][BF]b |
| [iconv] 2L1 2T | pass | a[C2][C2][BF][BF]b | a[C2][BF]b | a[C2][BF]b |
| [iconv] 2L2 2T | pass | a[E1][E1][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [iconv] 2L2 3T | pass | a[E1][E1][80][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [iconv] 3L2 3T | pass | a[E1][E1][E1][80][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [iconv] L2 T 2L2 3T | pass | a[E1][80][E1][E1][80][80][80]b | a[E1][80][80]b | a[E1][80][80]b |
| [iconv] 2L1 1T at egdes | pass | [C2][C2][BF] | [C2][BF] | [C2][BF] |
| [iconv] 2L1 2T at egdes | pass | [C2][C2][BF][BF] | [C2][BF] | [C2][BF] |
| [iconv] 2L2 2T at egdes | pass | [E1][E1][80][80] | [E1][80][80] | [E1][80][80] |
| [iconv] 2L2 3T at egdes | pass | [E1][E1][80][80][80] | [E1][80][80] | [E1][80][80] |
| [iconv] 3L2 3T at egdes | pass | [E1][E1][E1][80][80][80] | [E1][80][80] | [E1][80][80] |
| [iconv] L2 T 2L2 3T at egdes | pass | [E1][80][E1][E1][80][80][80] | [E1][80][80] | [E1][80][80] |
| [iconv] lowest out of range 4-byte starting with F4 - U+110000 | pass | a[F4][90][80][80]b | ab | ab |
| [iconv] highest out of range 4-byte starting with F4 - U+13FFFF | pass | a[F4][BF][BF][BF]b | ab | ab |
| [iconv] lowest out of range 4-byte starting over F4 - U+140000 | pass | a[F5][80][80][80]b | ab | ab |
| [iconv] highest out of range 4-byte starting over F4 - U+1FFFFF | pass | a[F7][BF][BF][BF]b | ab | ab |
| [iconv] lowest 5-byte U+200000 | pass | a[F8][88][80][80][80]b | ab | ab |
| [iconv] highest 5-byte U+3FFFFFF | pass | a[FB][BF][BF][BF][BF]b | ab | ab |
| [iconv] lowest 6-byte starting with FC - U+4000000 | pass | a[FC][84][80][80][80][80]b | ab | ab |
| [iconv] highest 6-byte starting with FC - U+3FFFFFFF | pass | a[FC][BF][BF][BF][BF][BF]b | ab | ab |
| [iconv] lowest 6-byte starting with FD - U+40000000 | pass | a[FD][80][80][80][80][80]b | ab | ab |
| [iconv] highest 6-byte starting with FD - U+7FFFFFFF | pass | a[FD][BF][BF][BF][BF][BF]b | ab | ab |
| [iconv] lowest overlong 2-byte - U+0000 | pass | a[C0][80]b | ab | ab |
| [iconv] highest overlong 2-byte - U+007F | pass | a[C1][BF]b | ab | ab |
| [iconv] lowest valid 2-byte - U+00A0 | pass | a[C2][A0]b | a[C2][A0]b | a[C2][A0]b |
| [iconv] highest valid 2-byte - U+07FA | pass | a[DF][BA]b | a[DF][BA]b | a[DF][BA]b |
| [iconv] highest possible 2-byte - U+07FF | pass | a[DF][BF]b | a[DF][BF]b | a[DF][BF]b |
| [iconv] lowest overlong 3-byte - U+0000 | pass | a[E0][80][80]b | ab | ab |
| [iconv] highest overlong 3-byte - U+07FF | pass | a[E0][9F][BF]b | ab | ab |
| [iconv] lowest valid 3-byte - U+0800 | pass | a[E0][A0][80]b | a[E0][A0][80]b | a[E0][A0][80]b |
| [iconv] highest valid 3-byte - U+FFFB | pass | a[EF][BF][BB]b | a[EF][BF][BB]b | a[EF][BF][BB]b |
| [iconv] lowest overlong 4-byte - U+0000 | pass | a[F0][80][80][80]b | ab | ab |
| [iconv] highest overlong 4-byte - U+FFFB | pass | a[F0][8F][BF][BB]b | ab | ab |
| [iconv] lowest valid 4-byte - U+10000 | pass | a[F0][90][80][80]b | a[F0][90][80][80]b | a[F0][90][80][80]b |
| [iconv] highest valid 4-byte - U+10FFFD | pass | a[F4][8F][BF][BD]b | a[F4][8F][BF][BD]b | a[F4][8F][BF][BD]b |
| [iconv] lowest overlong 5-byte - U+0000 | pass | a[F8][80][80][80][80]b | ab | ab |
| [iconv] highest overlong 5-byte - U+1FFFFD | pass | a[F8][87][BF][BF][BD]b | ab | ab |
| [iconv] lowest overlong 6-byte - U+0000 | pass | a[FC][80][80][80][80][80]b | ab | ab |
| [iconv] highest overlong 6-byte - U+3FFFFFF | pass | a[FC][83][BF][BF][BF][BF]b | ab | ab |
| [iconv] Latin-1 fallback 0x76 | pass | v | v | v |
| [iconv] Latin-1 fallback 0xEB | pass | [EB] | [C3][AB] | [C3][AB] |
| [iconv] Latin-1 fallback word | pass | H[EB]llo | H[C3][AB]llo | H[C3][AB]llo |
| [iconv] Unknown sanitize mode exception | pass | sanitize("hello\xC0world", "str"); | thrown | thrown |
| [iconv] SJIS 0x76 -> U+0076 | pass | v | v | v |
| [iconv] SJIS 0xA6 -> U+FF66 | pass | [A6] | [EF][BD][A6] | [EF][BD][A6] |
| [iconv] SJIS 0x8140 -> U+3000 | pass | [81]@ | [E3][80][80] | [E3][80][80] |
| [iconv] SJIS 0x82DC -> U+307E | pass | [82][DC] | [E3][81][BE] | [E3][81][BE] |
| [iconv] SJIS 0x8CCC -> U+6545 | pass | [8C][CC] | [E6][95][85] | [E6][95][85] |
| [iconv] EUC-JP US-ASCII 0x76 -> U+0076 | pass | v | v | v |
| [iconv] EUC-JP JIS-X-201 0xB6 -> U+FF76 | pass | [8E][B6] | [EF][BD][B6] | [EF][BD][B6] |
| [iconv] EUC-JP JIS-X-201 0xDE -> U+FF9E | pass | [8E][DE] | [EF][BE][9E] | [EF][BE][9E] |
| [iconv] EUC-JP JIS-X-0208 0x2133 -> U+30FD | pass | [A1][B3] | [E3][83][BD] | [E3][83][BD] |
| [iconv] EUC-JP JIS-X-0208 0x3053 -> U+5C09 | pass | [B0][D3] | [E5][B0][89] | [E5][B0][89] |
| [iconv] EUC-JP JIS-X-0212 0x3031 - U+4E44 | pass | [8F][B0][B1] | [E4][B9][84] | [E4][B9][84] |
| [iconv] EUC-JP JIS-X-0212 0x4258 - U+66A4 | pass | [8F][C2][D8] | [E6][9A][A4] | [E6][9A][A4] |
| [iconv] ISO-8859-1 0x76 -> U+0076 | pass | v | v | v |
| [iconv] ISO-8859-1 0xE6 -> U+00E6 | pass | [E6] | [C3][A6] | [C3][A6] |
| [iconv] ISO-8859-2 0x76 -> U+0076 | pass | v | v | v |
| [iconv] ISO-8859-2 0xE6 -> U+0107 | pass | [E6] | [C4][87] | [C4][87] |
| [iconv] ISO-8859-15 0x76 -> U+0076 | pass | v | v | v |
| [iconv] ISO-8859-15 0xBE -> U+0178 | pass | [BE] | [C5][B8] | [C5][B8] |
| Untitled sanitize test 1 (str) | pass | |||
| Untitled sanitize test 2 (str) | pass | hello | hello | hello |
| Untitled sanitize test 3 (str) | pass | 1 | 1 | 1 |
| Untitled sanitize test 4 (str) | pass | [E2][80][A8] | ||
| Untitled sanitize test 5 (str_multi) | pass | [E2][80][A8] | [\n] | [\n] |
| Untitled sanitize test 6 (str) | pass | [E2][80][A9] | ||
| Untitled sanitize test 7 (str_multi) | pass | [E2][80][A9] | [\n][\n] | [\n][\n] |
| Untitled sanitize test 8 (str) | pass | [0B] | ||
| Untitled sanitize test 9 (str_multi) | pass | [0B] | [\n][\n] | [\n][\n] |
| Untitled sanitize test 10 (str) | pass | [0C] | ||
| Untitled sanitize test 11 (str_multi) | pass | [0C] | [\n][\n] | [\n][\n] |
| Untitled sanitize test 12 (str) | pass | [0D][\n] | ||
| Untitled sanitize test 13 (str_multi) | pass | [0D][\n] | [\n] | [\n] |
| LF [single line mode] | pass | [\n] | ||
| LF [multi line mode] | pass | [\n] | [\n] | [\n] |
| Untitled sanitize test 16 (str) | pass | [0D] | ||
| Untitled sanitize test 17 (str_multi) | pass | [0D] | [\n] | [\n] |
| mix of CRLF and CR [single line mode] | pass | [0D][0D][\n] | ||
| mix of CRLF and CR [multi line mode] | pass | [0D][0D][\n] | [\n][\n] | [\n][\n] |
| TAB [single line mode] | pass | [09] | ||
| TAB [multi line mode] | pass | [09] | ||
| NEL [single line mode] | pass | [C2][85] | ||
| NEL [multi line mode] | pass | [C2][85] | [\n] | [\n] |
| Strip Cc U+0000 | pass | foo[00]bar | foobar | foobar |
| Strip Cc U+0001 | pass | foo[01]bar | foobar | foobar |
| Strip Cc U+0002 | pass | foo[02]bar | foobar | foobar |
| Strip Cc U+0003 | pass | foo[03]bar | foobar | foobar |
| Strip Cc U+0004 | pass | foo[04]bar | foobar | foobar |
| Strip Cc U+0005 | pass | foo[05]bar | foobar | foobar |
| Strip Cc U+0006 | pass | foo[06]bar | foobar | foobar |
| Strip Cc U+0007 | pass | foo[07]bar | foobar | foobar |
| Strip Cc U+0008 | pass | foo[08]bar | foobar | foobar |
| Strip Cc U+000E | pass | foo[0E]bar | foobar | foobar |
| Strip Cc U+000F | pass | foo[0F]bar | foobar | foobar |
| Strip Cc U+0010 | pass | foo[10]bar | foobar | foobar |
| Strip Cc U+0011 | pass | foo[11]bar | foobar | foobar |
| Strip Cc U+0012 | pass | foo[12]bar | foobar | foobar |
| Strip Cc U+0013 | pass | foo[13]bar | foobar | foobar |
| Strip Cc U+0014 | pass | foo[14]bar | foobar | foobar |
| Strip Cc U+0015 | pass | foo[15]bar | foobar | foobar |
| Strip Cc U+0016 | pass | foo[16]bar | foobar | foobar |
| Strip Cc U+0017 | pass | foo[17]bar | foobar | foobar |
| Strip Cc U+0018 | pass | foo[18]bar | foobar | foobar |
| Strip Cc U+0019 | pass | foo[19]bar | foobar | foobar |
| Strip Cc U+001A | pass | foo[1A]bar | foobar | foobar |
| Strip Cc U+001B | pass | foo[1B]bar | foobar | foobar |
| Strip Cc U+001C | pass | foo[1C]bar | foobar | foobar |
| Strip Cc U+001D | pass | foo[1D]bar | foobar | foobar |
| Strip Cc U+001E | pass | foo[1E]bar | foobar | foobar |
| Strip Cc U+001F | pass | foo[1F]bar | foobar | foobar |
| Strip Cc U+007F | pass | foobar | foobar | foobar |
| Strip Cc U+0080 | fail | foo[80]bar | foobar | foo?bar |
| Strip Cc U+0081 | pass | foo[C2][81]bar | foobar | foobar |
| Strip Cc U+0082 | pass | foo[C2][82]bar | foobar | foobar |
| Strip Cc U+0083 | pass | foo[C2][83]bar | foobar | foobar |
| Strip Cc U+0084 | pass | foo[C2][84]bar | foobar | foobar |
| Strip Cc U+0086 | pass | foo[C2][86]bar | foobar | foobar |
| Strip Cc U+0087 | pass | foo[C2][87]bar | foobar | foobar |
| Strip Cc U+0088 | pass | foo[C2][88]bar | foobar | foobar |
| Strip Cc U+0089 | pass | foo[C2][89]bar | foobar | foobar |
| Strip Cc U+008A | pass | foo[C2][8A]bar | foobar | foobar |
| Strip Cc U+008B | pass | foo[C2][8B]bar | foobar | foobar |
| Strip Cc U+008C | pass | foo[C2][8C]bar | foobar | foobar |
| Strip Cc U+008D | pass | foo[C2][8D]bar | foobar | foobar |
| Strip Cc U+008E | pass | foo[C2][8E]bar | foobar | foobar |
| Strip Cc U+008F | pass | foo[C2][8F]bar | foobar | foobar |
| Strip Cc U+0090 | pass | foo[C2][90]bar | foobar | foobar |
| Strip Cc U+0091 | pass | foo[C2][91]bar | foobar | foobar |
| Strip Cc U+0092 | pass | foo[C2][92]bar | foobar | foobar |
| Strip Cc U+0093 | pass | foo[C2][93]bar | foobar | foobar |
| Strip Cc U+0094 | pass | foo[C2][94]bar | foobar | foobar |
| Strip Cc U+0095 | pass | foo[C2][95]bar | foobar | foobar |
| Strip Cc U+0096 | pass | foo[C2][96]bar | foobar | foobar |
| Strip Cc U+0097 | pass | foo[C2][97]bar | foobar | foobar |
| Strip Cc U+0098 | pass | foo[C2][98]bar | foobar | foobar |
| Strip Cc U+0099 | pass | foo[C2][99]bar | foobar | foobar |
| Strip Cc U+009A | pass | foo[C2][9A]bar | foobar | foobar |
| Strip Cc U+009B | pass | foo[C2][9B]bar | foobar | foobar |
| Strip Cc U+009C | pass | foo[C2][9C]bar | foobar | foobar |
| Strip Cc U+009D | pass | foo[C2][9D]bar | foobar | foobar |
| Strip Cc U+009E | pass | foo[C2][9E]bar | foobar | foobar |
| Strip Cc U+009F | pass | foo[C2][9F]bar | foobar | foobar |
| Strip Cf U+FEFF | pass | foo[EF][BB][BF]bar | foobar | foobar |
| Strip Cf U+206A | pass | foo[E2][81][AA]bar | foobar | foobar |
| Strip Cf U+206B | pass | foo[E2][81][AB]bar | foobar | foobar |
| Strip Cf U+206C | pass | foo[E2][81][AC]bar | foobar | foobar |
| Strip Cf U+206D | pass | foo[E2][81][AD]bar | foobar | foobar |
| Strip Cf U+206E | pass | foo[E2][81][AE]bar | foobar | foobar |
| Strip Cf U+206F | pass | foo[E2][81][AF]bar | foobar | foobar |
| Strip Cf U+FFF9 | pass | foo[EF][BF][B9]bar | foobar | foobar |
| Strip Cf U+FFFA | pass | foo[EF][BF][BA]bar | foobar | foobar |
| Strip Cf U+E0000 | pass | foo[F3][A0][80][80]bar | foobar | foobar |
| Strip Cf U+E003F | pass | foo[F3][A0][80][BF]bar | foobar | foobar |
| Strip Cf U+E007F | pass | foo[F3][A0][81][BF]bar | foobar | foobar |
| Strip Cs U+D800 | fail | foo[ED][A0][80]bar | foobar | foo???bar |
| Strip Cs U+DA00 | fail | foo[ED][A8][80]bar | foobar | foo???bar |
| Strip Cs U+DBFF | fail | foo[ED][AF][BF]bar | foobar | foo???bar |
| Strip Cs U+DC00 | fail | foo[ED][B0][80]bar | foobar | foo???bar |
| Strip Cs U+DE00 | fail | foo[ED][B8][80]bar | foobar | foo???bar |
| Strip Cs U+DFFF | fail | foo[ED][BF][BF]bar | foobar | foo???bar |
| Strip Cn non-character U+FFFE | pass | foo[EF][BF][BE]bar | foobar | foobar |
| Strip Cn non-character U+FFFF | pass | foo[EF][BF][BF]bar | foobar | foobar |
| Strip Cn non-character U+1FFFE | pass | foo[F0][9F][BF][BE]bar | foobar | foobar |
| Strip Cn non-character U+1FFFF | pass | foo[F0][9F][BF][BF]bar | foobar | foobar |
| Strip Cn non-character U+2FFFE | pass | foo[F0][AF][BF][BE]bar | foobar | foobar |
| Strip Cn non-character U+2FFFF | pass | foo[F0][AF][BF][BF]bar | foobar | foobar |
| Strip Cn non-character U+10FFFE | pass | foo[F4][8F][BF][BE]bar | foobar | foobar |
| Strip Cn non-character U+10FFFF | pass | foo[F4][8F][BF][BF]bar | foobar | foobar |
| Strip Cn non-character U+FDD0 | pass | foo[EF][B7][90]bar | foobar | foobar |
| Strip Cn non-character U+FDE0 | pass | foo[EF][B7][A0]bar | foobar | foobar |
| Strip Cn non-character U+FDEF | pass | foo[EF][B7][AF]bar | foobar | foobar |
| Replace So U+FFFC with ? | pass | foo[EF][BF][BC]bar | foo?bar | foo?bar |
| Replace So U+FFFD with ? | pass | foo[EF][BF][BD]bar | foo?bar | foo?bar |