如何在Safari中显示带有转义字符的确切网址?

时间:2011-05-18 20:53:34

标签: javascript safari character-encoding

我有这样的网址:http://www.refskou.dk/safari-%F8.html 该文件的名称如下:safari-ø.html

该文件由以下内容组成:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
alert(this.location);
</script>
</head>
<body>
</body>
</html>

但它没有打印出/safari-%F8.html也没有打印出safari-ø.html

打印出表示不知道字符“ø”的问号。 我想要的就是在地址栏中打印出来的URL。

请给我一个提示。就我的测试而言,这只是Safari中的一个问题。 我需要告诉你,我无法控制页面上使用的字符集类型。我只能执行javascript: - )


回应this answer

缺乏控制的原因是我做了一个脚本,可以包含在希望任何网页中,所以我无法控制使用何种类型的字符集。包含的脚本可以有自己的字符集,由“脚本”标签上的charset属性引入,但我无法使其工作。

4 个答案:

答案 0 :(得分:1)

unescape('/safari-%F8.html') == 'safari-ø.html'

请注意,Safari仍会为您提供?,但Chrome会显示%F8ø

在Safari(没关系):

var str = '/safari-%F8.html';
alert(str.replace(/%[A-F0-9]{2}/g, function(v){ return String.fromCharCode(parseInt(v.substr(1), 16)); }));

以上工作在普通字符串上,但Safari将该字符视为unicode 65533,我不知道如何将其转换回ASCII 248 ...

答案 1 :(得分:0)

尝试unescape javascript函数:

alert(unescape(this.location));

答案 2 :(得分:0)

我相信你需要指定一个字符集。

你头部的第一件事......

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

More Info Here


编辑:我错过了OP声明他无法控制页面上字符集的部分。我相信这是问题的根源,并想知道为什么他无法控制这个问题。

答案 3 :(得分:0)

好吧,我终于开始工作了。出于某种原因,当从/ window.location询问时,Safari无法理解奇怪的字符。但是向下移动一个级别到文档对象并询问URL会给我提供我需要的东西。为什么会这样,我不能告诉你,但它解决了这个问题。