0

時折、次のエラーが発生します。

An invalid character was found in the mail header: '‎'

意味がありませんでしたが、調査すると、目に見えないキャラクターがそこにあるようです.

これがどのユーザーかはわかっているので、DB から選択します。

select email from user where email = 'their@address.com'

ユーザーの電子メールは のように表示されますがtheir@address.com、それをテキスト エディターにコピーすると、奇妙な先頭文字が表示されます。

ここに画像の説明を入力

では、同じ文字列ではないのに、なぜ sql 等値演算子が一致するのでしょうか? そのいくつかの目に見えない文字のため?

その先頭の文字だけをテキスト ファイルに Unicode として保存し、それを 16 進エディターで開くと、次のように表示されます。

FF FE 0E 20

更新:問題のあるバイトは次のとおりです。

E2 80 8E

このクレイジーさは何ですか、どうやってそこにたどり着いたのですか?

今後これを防ぐにはどうすればよいですか、またデータベースをクリーンアップするにはどうすればよいですか (これらのいくつかがあるため)

これらは、ユーザーが作成されたときの関連ヘッダーです。

Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*; q=0.01
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

ありがとう

4

2 に答える 2

2

バイト FF FE は UTF-16BE エンコーディングの U+FEFF BYTE ORDER MARK であり、0E 20 は同じエンコーディングの U+200E LEFT-TO-RIGHT MARK です。ファイルの先頭では、少なくともコンテンツがラテン アルファベットのように左から右への書記体系である場合、それらは無害です。

特に、どのファイルが議論されているのか、どのように作成されたのか (フォームの投稿から? データベースから? 他の方法で? どのように?) がよくわからなかったので、それらの起源を推測することはできません。

于 2012-08-19T14:10:24.170 に答える
1

FFFE はUnicode バイト オーダー マーク (BOM)です。

編集:

0E20 はタイの文字PHO SAMPHAOです。それがどこから来たのかわかりません。

于 2012-08-19T13:57:53.270 に答える