スパムとの闘いの最中に、何のコンテンツも持たずに保存されているスパム コメントを見つけました...
問題を特定しようとした後、同様のコメントをMySQLデータベースとともにファイルに保存した後に見つけたものは次のとおりです...
これは (未知の入力エンコーディングのため HEX) コメントの最初のいくつかの「文字」がどのように見えるかです:
D1EA E0F7 E0F2 FC20 EFEE EFF3 EBFF F0ED FBE5 20EF F0EE E3F0 E0EC ECFB
テストの実行後INSERT INTO test VALUES (0xD1EAE0F7E0F2FC20EFEEEFF3EBFFF0EDFBE520EFF0EEE3F0E0ECECFB21),(0x21D1EAE0F7E0F2FC20EFEEEFF3EBFFF0EDFBE520EFF0EEE3F0E0ECECFB), (0x21)
、mysql テーブル (utf-8) には 3 つの行が含まれています。最初はテキストなし、2 番目と 3 番目は単一文字「!」です テキストとして... (「!」の 21 の 16 進数コードも最初のエントリの末尾にあることに注意してください。ただし、保存されません)。(latin1 エンコーディングは、すべてのバイトの無駄なテキスト置換を節約しましたが、この投稿はそれについてではありません)
もちろん、D1EA (D=1101 0001 の後には 1110xxxx ではなく 10xxxxxx バイトが続く必要があります) は有効な UTF-8 文字ではありませんが、データベース サーバーのような堅牢なシステムはそれを処理できるはずです...
私の推測では、Mysql (ver. 5.1.66-0+squeeze1) は、有効な UTF-8 エンコード文字でなくても、データを保存するタイミングと保存しないタイミングを選択すべきではありません... または、少なくとも、クエリを要求するべきではありませんデータを保存しないことにしたとき、成功しました!
それはmysqlのバグですか、それとも何ですか?
ありがとう