2017-12-06 5 views
2

がそのまま使用されているすべての非英数字/句読点を削除しますDY "•(絵文字)解析フォームデータは、私たちが奇妙な文字を見ているWebフォームの項目で

または

‬(全く分からないが、それは窓1252だと思う)

私は正規表現を使ってutf-8と同等のものを置き換えることができますが、それらを効率的に削除する正規表現やエンコードを使用することをお勧めします。私はUTF-8にMYSQLに

をDBテーブルを設定している

Perlで、このための最良かつ最も理想的なソリューションとは何ですか?または、代わりにmysqlテーブルでそれを行うことはできますか?

+1

エンコーディングが途切れているように見えます。クライアントはutf8を送信し、あなたはutf8を安全にしたいが、途中でCP1252のように扱われる。それを修正したいのですか、このデータを破棄しますか? (ヒント:ユーザーのデータを捨てることはめったに良いことではありません) – simbabque

+0

理想的には私はデータを保存したいが、それを正しくエンコードして将来表示することができます –

答えて

-1

これにより、すべての特殊文字が削除されます。 ORDテーブルを確認して、必要なものが削除されていないことを確認できます。

$line =~ s/(.)/(ord($1) > 127) ? "" : $1/egs; 
+0

downvote。どのようなsurpirse。 – Andrey

+0

汚れた最後の手段として削除する場合に便利です –

+0

"ただし、削除する必要がない場合は、正規表現やエンコーディングを使用して効率的に削除することをお勧めします。 – Andrey

2

’ U + 2019 RIGHTシングルクォーテーションマーク()をCP1252端末に表示、UTF-8を使用して符号化されます。

💕は、U + 1F495である。同様に、2つの心臓()も扱われる。

‬は、UTF-8を使用してエンコードされたUTF-8を使用してエンコードされ、次にUTF-8を使用して2回エンコードされた後、cp1252端末に表示されます。


Perlで、このための最良かつ最も理想的なソリューションとは何ですか?または、代わりにmysqlテーブルでそれを行うことはできますか?

に依存します。

あなたのPerlプログラムにバグがある場合は修正する必要があります。

データベース内のデータが不良な場合は、そのデータを修正する必要があります。

これは、何らかの形で証拠を提示していないということです。 (フィールドのエンコーディングを指定すると、SELECT HEX(field)はデータがデータベースに存在するかどうかを明らかにします)

+0

データベースに追加される前に、データを保持し、正しくperlで正しくエンコードすることに同意しました。 –

+0

次に、要求された情報を入力します。必要な情報を追加して質問を修正したら、教えてください。回答を更新します。 – ikegami

関連する問題