我有一个带有以下meta标签的页面:

<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中对响应标头进行了不同的设置,并覆盖了meta标签。我已经检查了Chrome中的响应标头,并且确实将它们设置为UTF-8。我该怎么做才能解决此问题?

最佳答案

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代码中。似乎使用基于ISO-8859-1的编码%e9而不是适当的基于UTF-8的编码对字母“é”本身进行了编码。

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

09-10 07:33
查看更多