Можно использовать строковое форматирование стиля C:
"%d:%d:d" % (hours, minutes, seconds)
Посмотрите здесь, особенно: https://web.archive.org/web/20120415173443/http://diveintopython3.ep.io/strings.html
К сожалению, это ошибка Firefox, поскольку он декодирует location.hash
в дополнительное время при доступе к нему. Например, попробуйте сделать это в Firefox:
location.hash = "#%30";
location.hash === "#0"; // This is wrong, it should be "#%30"
Единственное кроссбраузерное решение - просто использовать (location.href.split ("#") [1] || "")
вместо хэш. Установка хэша с использованием location.hash
, похоже, работает правильно для всех браузеров, которые поддерживают location.hash
.
Отвечая на мой вопрос, мое текущее решение - проанализировать window.location.href
вместо использования window.location.hash
, потому что первый всегда (т.е. в каждом браузере) закодирован по URL. Поэтому предлагаемую функцию decodeURIComponent
CMS всегда можно безопасно использовать. YUI делает то же самое, поэтому это не может быть так неправильно ...
Вы можете использовать decodeURIComponent
, он вернет # ü
во всех случаях:
decodeURIComponent('#%C3%BC'); // #ü
decodeURIComponent('#ü'); // #ü
Попробуйте здесь .
На самом деле в моей версии Firefox (3.5 в Linux), если я набираю «#% C3% BC» в качестве хэша в URL-адресе, сам URL-адрес фактически преобразуется в юникод с "# ü". Но вы, похоже, ответили на свой вопрос - в Firefox браузер преобразует escape-коды сущностей в URL, а в IE - нет.
Мой совет на самом деле таков: вместо того, чтобы помещать "#% C3% BC" "в URL-адресе, просто используйте полный код Unicode в своих хэшах и URL-адресах. Это вариант? Он должен нормально работать в любом современном браузере.