1

让我们来看看这个简单的 HTML:

<html>
<body>
<!-- Object Tag For the Audio Player -->
<object id="mpAudio" width="100%" height="100%"
    classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
    type="application/x-oleobject" align="middle">
        <param name="URL" value="http://servername/media/Alt.TÉst/default.wav" />
        <param name="AutoStart" value="True" />
        <param name="UIMode" value="Full" />
        <param name="EnableContextMenu" value="True" />
        <param name="WindowlessVideo" value="True" />
        <param name="Mute" value="False" />
</object>
</html>

注意在 URL 中有这个 unicode 字符:É

当我打开该 html 文件时,音频播放为乱码。值得注意的是,在我拥有的一些较旧的 VM 中(用于随机 IE6 测试),它具有 2003 标准版的操作系统、IE 6 浏览器和 Windows Media Player 6.4.09.1130 .. 它工作正常,很好!我的测试是乱码,涉及 Windows 7、IE 10 和 WMP 12.0.7601.17514

我认为解决方案可能是对 URL 进行 % 编码。那更糟。编码变成:http%3A%2F%2Fservername%2Fmedia%2FAlt.T%C3%89st%2Fdefault.wav

而且我从至少可以玩乱码,到根本不玩任何东西。

另一项测试:

获取未编码的 url 并将其放入 Firefox,打开 wav(因此 Firefox 可以使用 unicode 字符)。获取编码的 url,我得到“找不到服务器”。我想我不知道如何编码!

除非消除用于数据输入的 unicode(这些 URL 是从用户名生成的,在某些语言环境中它们允许名称中包含 unicode 字符),我该如何进行这项工作?

谢谢。

4

1 回答 1

1

我认为解决方案可能是对 URL 进行 % 编码。那更糟。编码变成:http%3A%2F%2Fservername%2Fmedia%2FAlt.T%C3%89st%2Fdefault.wav

解决方案应该是对路径组件进行 URL 编码,而不是对整个 URL 进行编码。你想最终得到:

http://servername/media/Alt.T%C3%89st/default.wav

虽然,我预计失败案例会得到 404 并且不播放任何东西——乱码音频是一个奇怪的结果。可能还有不同的问题?

于 2013-08-14T15:44:39.993 回答