用 javascript 解码 url 中的重音字母?

to decode accented letters in the url with 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>

e 这个代码 js:

var linkcodificato= self.location.href;
var link= decodeURIComponent(linkcodificato);

我可以解码很多字符(?|!和许多其他字符)但不能解码带重音符号的字母...为什么?

à = %E0

编辑

在我的搜索栏中搜索:

"hello à"

我的url是这样的:

?q=Hello+%E0

问题是%E0ANSIWindows-1252)编码中表示á字符,而在utf-8中是无效的。

您可以通过确保以下几点来避免这种行为:

  • 您的 html 文件以 utf-8 编码保存。如何做到这一点取决于您的编辑器,但您应该在 "Save As" 或 "Preferences".

  • 中查找字符编码选项
  • 您在 html 文件本身中指定 utf-8 编码,例如将 <meta charset="utf-8"> 放在 head 部分。

  • 如果经过以上两步还是不行,可以通过添加属性[=24=强制formutf-8编码提交数据] 到 form 标签。

通过此设置,您会发现 á 字符在 url 中保持原样。然而,location.href 仍将被编码,但如果您执行上述操作,编码现在将具有 %C3%A0 而不是令人讨厌的 %E0,并且可以很好地转换为 à 当你使用 decodeURIComponent.

无论何时进行更改,请务必刷新原始页面,然后重新提交表单。

这是您的 html 代码的建议开头(删除 ! 之前的 space):

< !DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>

通过以上内容,您可以确保您的文档在 utf-8 模式下运行。