2012-04-06 19 views
3

私は現在、私のCMSのユーザのためのHTMLエディタとしてTinyMCEを使用しています。 何とかユーロ記号(€)はIE(any)によって%u20ACに変換されます。インターネットエクスプローラでUTF-8エンコーディング%u20AC〜€

短い検索の結果、thisが見つかりました。これは、UTF-8ユーロ記号のエンコーディングごとに多くの情報を提供しますが、パーセンテージアイコンは%u20ACではありません。

はこの奇妙なエンコーディングをキャッチし、それを置くことができるPHPの関数があります...私はUTF-8のための適切なヘッダを与えているので、私はIEだけで物事に独自の方法をやって失礼さgues通常のhtmlentity(16進数、10進数または名前付き)。私はちょうどstring_replace()この単一の問題のシンボルかもしれませんが、私はむしろすべての可能な競合を一度に修正したいと思います。

また、%u&#xに置き換えて、%uの通常の使用を無効にする必要がありますか?

+0

シンボルはどこに保管していますか? DBで?または直接PHPファイルですか? –

答えて

5

%u20ACが生成されるのUnicode符号化されたデータでこのコードを使用してみてくださいJavaScriptのescape()はサーバー側の処理のためにUTF8に機能します。

標準PHPのurldecodeでは、拡張ルーチンを使用する必要があるので、それに対処することはできません。

/** 
* @param string $str unicode and ulrencoded string 
* @return string decoded string 
*/ 
function utf8_urldecode($str) { 
    $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str)); 
    return html_entity_decode($str,null,'UTF-8');; 
} 

あなたはTinyMCEのために、この動作を設定できるかどうかもご確認ください。

+0

ありがとう!なぜFirefoxでこれが起こらないのでしょうか? –

+0

@Webscrabbler:いいえ。それはおそらくTinyMCEに関係しているので、TinyMCEがなぜそのキャラクターを逃れることを望んでいるのかわかりません。 – hakre

0

20ACあなたがusign の代わりにちょうどあなたのhtmlファイルにイースリーこの問題をsloveすることができますので、それは、ユーロのHEXコードですが€

+0

私の顧客はTinyMCEプラットフォームを使用しており、ユニコードが何であるか分かりません。彼らはIEで単に€を使用できるようにする必要があります –

+0

申し訳ありませんが、私は他の方法を知っていない、TinyMCEメニューをチェックしようとすると、それはprobly見つけるでしょうか? – Chlebta

関連する問題