2014-02-03 3 views
6

Мне нужно установить ссылку с этим href="file://attachments/aaaa_#_aaaa.msg" Очевидно, что таким образом не работает, потому что для якорей используется символ хеша #.Использовать символ # в URL-адресе внутри имени файла

Так я пытаюсь изменить это: href="file://attachments/aaaa_%23_aaaa.msg" , но когда я открываю URL в IE, браузер пытается открыть это: href="file://attachments/aaaa_%2523_aaaa.msg" ИЭ кодирующей % характера %25

Как я могу поставить имя файла в URL-адресе для кодирования и чтения хеш-символа # во всех браузерах для загрузки файла?

Я не могу изменить имя файла, чтобы удалить этот символ, поэтому мне нужен способ справиться с этой проблемой.

+1

Использование 'aaaa_% 23_aaaa.msg' для меня работало на IE8. –

+1

Только что протестировано: '% 23' работает в Firefox/26, Chrome/32, Opera/12.16 и Explorer/11 (все работает в Windows 7). О каком целевом браузере это не удается? –

+1

Если я помещаю это «aaaa_% 23_aaaa.msg» прямо в адресную панель, работает, но когда я помещаю якорь вроде 'aaaa_#_aaa.msg' В IE11 пытается открыть 'файл: //attachments/aaaa_%2523_aaa.msg ' – ajimenez

ответ

0

Вы сможете избежать много и много боли, если сможете переименовать свои файлы, чтобы они не содержали символ «#». До тех пор, пока они это делают, у вас, вероятно, будут проблемы с текущим и будущим кросс-браузером, путаница от имени будущих разработчиков, работающих над вашим кодом (или путаница от вашего имени в будущем, когда вы забыли все входы и выходы кодировки) и т. д. Кроме того, некоторые системы Unix/Linux не допускают «#» в именах файлов. Не знаете, какую ОС вы используете, но ваши имена файлов должны быть как можно более переносимыми в разных ОС, даже если вы «уверены» прямо сейчас, что никогда не будете работать в одной из этих систем.

+0

У вас есть ссылки на это? Насколько я знаю, '#' - простой символ US-ASCII, который не имеет особого значения в любой файловой системе Unix, о которой я знаю. И кодировка его в URL-адресе проста (в отличие от других символов Юникода, которые имеют разные кодировки в Latin1 и UTF-8). –

+0

@ Álvaro G. Vicario, у меня нет ссылки; У меня есть память о том, что вы используете какой-то UNIX-вкус и не можете использовать «#». И учитывая, что он имеет особое значение в URL-адресах, а также является идентификатором комментария на некоторых языках программирования, я избегаю этого, и он хорошо работает для меня. Например, я не сталкивался с такими проблемами, как OP: –

+0

Я только что сделал файл с именем «PO # tralala.pdf» в Fedora 23 с файловой системой ext4. Так что да. –