3

我有一个带有以下元标记的页面:

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

我认为这会将默认字符集设置为 UTF-8,实际上它出现在 Chrome 和 Safari 中,但在 Firefox 中却没有。

我在页面上有一个 PHP 脚本,它为 jPlayer 生成音频文件的播放列表,并且带有重音符号的文件名在 Firefox 中不起作用/播放。

这是我在 Firebug 控制台中看到的错误消息:

在此处输入图像描述

如您所见,文件名中的字符没有被正确读取。文件名应为“Guessi-Guéré-Guessi (Pop Bariba)”

然后,当我查找有关错误的更多详细信息时,在“标题”选项卡下,我看到了:

在此处输入图像描述

这表明字符集是 iso-8859-1。然后在“响应”选项卡中,我看到:

在此处输入图像描述

这确认了错误,但这次显示了正确的编码。该文件肯定存在,正如我所说,它在其他浏览器中播放/工作。

所以我假设问题与在 Firefox 中设置不同的响应标头有关,并覆盖元标记。我检查了 Chrome 中的响应标头,它们确实设置为 UTF-8。我能做些什么来解决这个问题?

4

2 回答 2

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它似乎使用基于 ISO-8859-1 的编码而不是正确的基于 UTF-8 的编码自行对字母“é”进行编码。

确保正确生成链接页面,使用字母“é”而不是任何 % 编码形式基于 UTF-8 的编码%C3%A9

于 2012-07-21T16:33:21.303 回答
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 回答