2011-07-21 11 views
0

私はのような奇妙な文字はすべてがラインの下のどこかの時点で破損する原因となる当社のデータベースに表示されるデータとの一定の問題を抱えています。私は、Microsoft Officeから貼り付けることができるこれらの狂ったことのすべてを通し、特定の文字を通過させ、無視するシステムを用意する必要があります。このようなものが組み込まれているのですか、または最初から始めなければなりませんか?すべてタイプの文字を削除

+0

最も簡単な解決策は、プレーンテキストに貼り付け入力を強制的にフロントエンドにjsのハンドラを追加することであってもよいです。確かにどのように実装するかわからないが、私はいくつかのプロジェクトのFCK/CKエディタでオンになっているオプションがあることを知っている。クライアント側でこれを行うことで、ユーザーは書式がどのように見えるかを知ることができます。 – prodigitalson

+1

あなたの問題のようなサウンドは、文字エンコーディングの競合です。すべての文字セット、データベース、データを追加するために使用されたWebページの文字セット、および受け入れられた応答と応答された文字セットのHTTPヘッダを確認しましたか? –

答えて

0

まあ、このような文字をすべて削除することができます。 $text = preg_replace('@[^\d\w\s,.;:]@', '', $text);ここで、[^\d\w\s,.;:]は、保持する文字のセットです(\ d \ w \ sはすべての数字、文字、スペースを意味します)。あなたが保持したい他の文字でセットを修正してください。

しかし、それは間違ったアプローチです。代わりに、アプリケーション全体がUTF-8を一から使用して処理していることを確認して、それらの文字を正しく保存して処理できるようにする必要があります。この日および年齢ではASCIIまたはISOラテン語のサイトを作ることだけで奇妙で、基本的に起因する人々が実際に使用して文字を切り出すにデータ損失が発生する...

+0

エンコーディングがどのように機能するかについて、私は非常に限られた理解しか持っていません。データベースをUTF 8で保存すると、ブラウザからエンコードする必要がありますか?ブラウザがUTF-8でコンテンツを貼り付けていない場合は、文字がすでに乱雑です。 – Webnet

+1

これは、UTF-8でなければなりません。 dbにUTF-8を格納し、PHPでUTF-8を処理し、HTML出力をUTF-8に設定し、すべてのフォームをUTF-8で送信します。後者の部分の '

'タグには、通常、 'enctype =" multipart/form-data "accept-charset =" UTF-8 "があります。 PHPでおそらくhttp://php.net/mysql_set_charsetを読んでみたいです –

+0

UTF-8はスペイン語の文字で動作しますか? – Webnet

2

[OK]を、私は、文字エンコーディングには専門家ではないが、約言われましたこの特定の問題となぜそれを得る。上記の私のコメントで述べたように、すべての文字セットが一致していることを確認する必要があります。 [?]

「の文字のその特定の配列が あなたが見る[不明]の文字のための3バイトのUTF-8のコードは次のとおりです。あなたは、文字の特定のセットを取得する理由

しかし、ここにありますFirefoxで。あなたは、フォームでUTF-8のように1バイトのWindows-1252文字を表示し、 とき がデータベースに戻ってそれを提出することを取得します。ブラウザは、3バイトのUTF-8 文字を送信して場所」文字セットを理解

あなたはこの課題についてもっと読むことを強くお勧めします。ここでは良いスタートです:Character Sets/Character Encoding Issues

+0

リンクの追加(および吸い上げ):http://www.joelonsoftware.com/articles/Unicode.html – cmbuckley

関連する問題