This is exactly same case, but with skipped /*!50100 WITH PARSER `ngram` */ part:
mysql> CREATE TABLE `test` ( -> `seq` int(11) NOT NULL AUTO_INCREMENT, -> `cont` text COLLATE utf8mb4_bin, -> PRIMARY KEY (`seq`), -> FULLTEXT KEY `fx_txts` (`cont`) -> ) ENGINE=myisam DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; Query OK, 0 rows affected (0.06 sec)
mysql> set names utf8mb4; Query OK, 0 rows affected (0.02 sec)
mysql> insert into test (cont) values ('aBc!efg'); Query OK, 1 row affected (0.03 sec)
mysql> insert into test (cont) values ('aBc@efg'); Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('aBc#efg'); Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('aBc$efg'); Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('aBc%efg'); Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc^efg'); Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc&efg'); Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc*efg'); Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc(efg'); Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc)efg'); Query OK, 1 row affected (0.00 sec)
mysql> select * from test where match(cont) against ('"c!e"' in boolean mode); Empty set (0.13 sec)
mysql> select * from test where match(cont) against ('"c#e"' in boolean mode); Empty set (0.00 sec)
mysql> select * from test where match(cont) against ('"c$e"' in boolean mode); Empty set (0.00 sec)
mysql> select * from test where match(cont) against ('"c!e"' in boolean mode); Empty set (0.00 sec)
mysql> select * from test where match(cont) against ('"c!e"' in natural language mode); Empty set (0.00 sec)
This is exactly same case, but with skipped /*!50100 WITH PARSER `ngram` */ part:
mysql> CREATE TABLE `test` ( utf8mb4_ bin;
-> `seq` int(11) NOT NULL AUTO_INCREMENT,
-> `cont` text COLLATE utf8mb4_bin,
-> PRIMARY KEY (`seq`),
-> FULLTEXT KEY `fx_txts` (`cont`)
-> ) ENGINE=myisam DEFAULT CHARSET=utf8mb4 COLLATE=
Query OK, 0 rows affected (0.06 sec)
mysql> set names utf8mb4;
Query OK, 0 rows affected (0.02 sec)
mysql> insert into test (cont) values ('aBc!efg');
Query OK, 1 row affected (0.03 sec)
mysql> insert into test (cont) values ('aBc@efg');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('aBc#efg');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('aBc$efg');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('aBc%efg');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc^efg');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc&efg');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc*efg');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc(efg');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test (cont) values ('abc)efg');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test where match(cont) against ('"c!e"' in boolean mode);
Empty set (0.13 sec)
mysql> select * from test where match(cont) against ('"c#e"' in boolean mode);
Empty set (0.00 sec)
mysql> select * from test where match(cont) against ('"c$e"' in boolean mode);
Empty set (0.00 sec)
mysql> select * from test where match(cont) against ('"c!e"' in boolean mode);
Empty set (0.00 sec)
mysql> select * from test where match(cont) against ('"c!e"' in natural language mode);
Empty set (0.00 sec)