6

Chrome はこれを変換します:aöüß%C3%A4%C3%B6%C3%BC%C3%9F しかし、Firefox はそれをこの奇妙なものに変換します: a%F6%FC%DF PHP で Firefox のものを元に戻す方法を見つけることができないようです。Urldecode と rawurldecode は残念ながら機能しません。誰かがそれに対処する方法を知っていますか? ありがとう。

4

2 に答える 2

5

Tei がすでに推測しているように、Chrome は URL パラメータに UTF-8 (おそらく推奨) を使用し、Firefox は Latin-1 を使用しています。あなたがこの行動を制御できるとは思いません。また、使用されたエンコーディングを推測する必要があるため、これを処理するのは困難です。

これは、デコードがどのように機能するかです (アプリケーションで UTF-8 を使用していると仮定すると、ブラウザーに依存します)。

クロム:

$text = urldecode($_GET['text']);

ファイアフォックス:

$text = utf8_encode(urldecode($_GET['text']));

これは、ほとんどの場合に機能するソリューションです。

function urldecode_utf8($text) {
    $decoded = urldecode($text);

    if (!mb_check_encoding($decoded, 'UTF-8')) {
        $decoded = utf8_encode($decoded);
    }

    return $decoded;
}
于 2012-04-02T11:28:25.563 に答える
1

ページで UTF-8 を使用するように強制します。おそらく、これらのコードは異なるエンコードされたウムラウトです。1 つは Latin1 のようなもので、もう 1 つはおそらく UTF-8 です。

utf-8 を強制する最良の方法は、html のメタ タグを使用することです。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
于 2012-04-02T11:07:20.863 に答える