Расшифровать акцентированные буквы в URL с помощью JavaScript?
Привет, ребята, у меня есть эта форма:
<form action='file:///C:/Users/amministratore/Desktop/google_cse/ricerca.html' method="get" target='_blank' id='cse-search-box'>
<input type='text' name='q' size='35' />
<input type="submit" name="sa" value="Search" />
</form>
этот код JS:
var linkcodificato= self.location.href;
var link= decodeURIComponent(linkcodificato);
Я могу декодировать много символов (? |! И многие другие), но не буквы с акцентом... почему?
à = %E0
РЕДАКТИРОВАТЬ
В моей строке поиска я ищу:
"привет а"
URL, который у меня есть, это:
?q=Hello+%E0
1 ответ
Проблема в том, что %E0
представляет á
персонаж в ANSI
(Windows-1252
), в то время как это недопустимо в utf-8
,
Вы можете избежать такого поведения, убедившись, что:
Ваш
html
файл сохраняется вutf-8
кодирование. Как это сделать, зависит от вашего редактора, но вы должны искать опции кодировки символов в "Сохранить как" или "Предпочтения".Вы указываете
utf-8
кодировка в вашемhtml
сам файл, например, поставив<meta charset="utf-8">
вhead
часть.Если с помощью вышеупомянутых двух шагов он все еще не работает, вы можете принудительно
form
представить данные вutf-8
кодирование путем добавления атрибутаaccept-charset="UTF-8"
кform
тег.
С этой настройкой вы обнаружите, что á
персонаж просто остается как есть в url
, Тем не менее location.href
будет по-прежнему кодироваться, но если вы сделали выше, кодировка теперь будет иметь %C3%A0
вместо обидчика %E0
, и это будет приятно преобразовать в à
когда вы используете decodeURIComponent
,
Всякий раз, когда вы вносите изменения, обязательно обновите исходную страницу и повторно отправьте форму.
Вот предполагаемое начало вашего html
код (убрать пробел перед !
):
< !DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
С учетом вышеизложенного вы гарантируете, что ваш документ запускается в utf-8
Режим.