2011-10-27 29 views
0

"â "のような文字を取得する記述。PHP不要な文字を削除する方法

utf8_encode()で試したそれらを変換するには、この傭兵者を別の奇妙なパターンに変換しています。また、regxを試して、文字を設定してください。 それはうまくいきませんでした。

問題を解決する簡単な解決策はありますか?

ありがとうございました。

+2

あなたはどこですか?その代わりに何があるべきですか?それはそれは私が混乱のビットだ「マイナス」を取得し、なぜルート – deceze

+3

は、データがどのようなエンコーディング使用してどのような方法で使用してから来てより多くの情報を必要としています! –

+0

でのエンコーディングの不一致がある可能性があります - – mushfiq

答えて

2

を扱ったときに私が書いたこの機能を試してみてください、あなたの文字列がUTF-8 文字セットを使用してエンコードされた文字が含まれています。 UTF-8にはいくつかのマルチバイト文字があります。たとえば、 ユーロ記号は、UTF-8で3バイトのE2, 82, ACで表されます。

しかし、あなたのソフトウェアは、ISO-8859-1として、1バイトの エンコーディングを使用して文字列を解釈しています。これにより、3バイトの文字の各バイトが別の文字として解釈されます。それは実際に3バイト文字のみ 最初のバイトである場合E2は、 例えば、âとして表示されています。

はutf8_encode()これに対する解決策ではありません。 ISO-8859-1 エンコードされた文字列を受け取り、UTF-8文字列を返します。すでにUTF-8 文字列があります。

あなたにはいくつかのオプションがあります。

一つ、それは に文字列がUTF-8含んで期待しているように文字列を使用していますどんな修正。文字列に という文字が正しく保存されます。たとえば、文字列を の一部としてWebページに書き込む場合は、Webページの文字エンコードがUTF-8であることを確認します。

つ、あなたが実際に使用しているものは何でもエンコーディングに文字列を変換します。 たとえば、utf_decode()を使用して、文字列をUTF-8からISO-8859-1 に変換できます。欠点は、ISO-8859-1は がUTF-8と同じ数の異なる文字を表すことができないため、一部の文字 が単にデコードで失われることです。

+0

とても良い説明です。ありがとうございました! –

0

は、私はUTF8

ほとんどの
function removeuni($content){ 
    preg_match_all("/[\x{80}-\x{3000}]/u", $content, $matches); 

    foreach($matches[0] as $match){ 
    $content = str_replace($match, mb_convert_encoding($match, "HTML-ENTITIES","UTF-8"), $content); 
    } 

    return $content; 
} 
関連する問題