Расшифровать акцентированные буквы в 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 Режим.

Другие вопросы по тегам