3

次のメタ タグを持つページがあります。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

これにより、デフォルトの文字セットが UTF-8 に設定されると思いましたが、実際には Chrome と Safari では表示されますが、Firefox では表示されません。

ページに jPlayer 用のオーディオ ファイルのプレイリストを生成する PHP スクリプトがありますが、文字にアクセントのあるファイル名が Firefox で動作/再生されません。

Firebug コンソールに表示されるエラー メッセージは次のとおりです。

ここに画像の説明を入力

ご覧のとおり、ファイル名の文字が正しく読み取られていません。ファイル名は「Guessi-Guéré-Guessi (Pop Bariba)」にする必要があります。

次に、エラーの詳細を探すと、[ヘッダー] タブの下に次のように表示されます。

ここに画像の説明を入力

これは、文字セットが iso-8859-1 であることを示しています。次に、「応答」タブに次のように表示されます。

ここに画像の説明を入力

これはエラーを確認しますが、今回は正しいエンコーディングが表示されています。ファイルは間違いなく存在し、私が言うように、他のブラウザで再生/動作します。

したがって、問題は、Firefox で応答ヘッダーの設定が異なり、メタタグをオーバーライドすることに関係していると推測しています。Chrome で応答ヘッダーを確認しましたが、実際には UTF-8 に設定されています。これを修正するにはどうすればよいですか?

4

2 に答える 2

1

jPlayer の Flash フォールバックに問題があることが判明しました。Firefox は Flash を使用して mp3 を再生します。

jPlayer の開発者による修正は次のとおりです。

url を setMedia に渡す前に、encodeURI(url) JavaScript コマンドを使用して JavaScript で URL をエンコードします。例えば:

$ ("#id").jPlayer("setMedia", {
   mp3: encodeURI("http://domain.com/audio/大地書房.mp3")
});
于 2012-07-27T18:52:05.340 に答える
1

URL エイリアスhttp://monthlymixup.com/mixups/july_2012/media/nick/Guessi-Gu%C3%A9r%C3%A9-Guessi%20%28Pop%20Bariba%29.mp3は、Firefox でも問題なく動作します。したがって、問題は明らかにリンクページにあります。この問題は、次のテスト ページを使用して再現できます。

<!doctype html>
<title></title>
<meta charset=iso-8859-1>
<a href=
"http://monthlymixup.com/mixups/july_2012/media/nick/Guessi-Gu%e9r%e9-Guessi%20%28Pop%20Bariba%29.mp3"
>link</a>

したがって、問題はリンク ページを生成する PHP コードにあります。%e9適切な UTF-8 ベースのエンコーディングではなく、ISO-8859-1 ベースのエンコーディングを使用して、文字「é」を単独で % エンコードしているようです。

% エンコード形式やUTF-8 ベースのエンコーディングではなく、文字「é」を使用して、リンク ページが正しく生成されていることを確認してください%C3%A9

于 2012-07-21T16:33:21.303 に答える