我有一个包含以下元标记的页面:
<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)”
当我查找有关错误的更多详细信息时,在“标题”选项卡下我看到:
这表明charset是iso-8859-1。然后在“响应”选项卡中,我看到:
确认错误,但这次显示的是正确的编码。该文件肯定存在,正如我所说,它在其他浏览器中播放/工作。
所以我假设问题与在Firefox中设置不同的响应标头有关,并覆盖了元标记。我已经检查了Chrome中的响应标头,它们确实设置为UTF-8。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
网址别名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代码。它似乎使用基于ISO-8859-1的编码%e9
而不是基于UTF-8的正确编码来自己编码字母“é”。
确保正确生成链接页面,使用字母“é”而不是任何%编码形式或基于UTF-8的编码%C3%A9
。
答案 1 :(得分:1)
事实证明,jPlayer中的Flash回退存在问题。 Firefox使用Flash播放mp3。
以下是jPlayer开发人员的修复:
在将url传递给setMedia之前,使用encodeURI(url)JavaScript命令在JavaScript中对URL进行编码。例如:
$ ("#id").jPlayer("setMedia", {
mp3: encodeURI("http://domain.com/audio/大地書房.mp3")
});