Как показать точный URL с экранированными символами в Safari? - PullRequest
1 голос
/ 19 мая 2011

У меня есть такой URL-адрес: 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: -)


В ответ на этот ответ .

Причина отсутствия контроля заключается в том, что я выполняю сценарий, которыйможно включить в любую веб-страницу, поэтому я не могу контролировать, какой тип кодировки используется.Включенный скрипт может иметь собственный набор символов, представленный атрибутом charset в теге «script», но я не могу заставить его работать.

Ответы [ 4 ]

1 голос
/ 19 мая 2011
unescape('/safari-%F8.html') == 'safari-ø.html'

Обратите внимание, что Safari все еще дает вам ?, но Chrome показывает либо %F8, либо ø

В Сафари (неважно):

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 ...

0 голосов
/ 28 мая 2011

Ну, я наконец-то все заработал.По какой-то причине Safari не может понять странные символы при запросе из этого / window.location.Но переход на уровень к объекту документа и запрос URL-адреса дает мне именно то, что мне нужно.Почему, я не могу вам сказать, но это решает проблему.

0 голосов
/ 19 мая 2011

Полагаю, вам нужно указать набор символов.

Первое, что у тебя в разделе Голова ...

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

Подробнее здесь


РЕДАКТИРОВАТЬ: Я пропустил часть, где OP утверждает, что он не контролирует набор символов на странице. Я верю, что это корень проблемы, и удивляюсь, почему он не контролирует это.

0 голосов
/ 19 мая 2011

Попробуйте функцию javascript unescape : alert(unescape(this.location));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...