使用javascript解码网址中的重音字母?

时间:2015-11-15 12:46:23

标签: javascript html urldecode

大家好,我有这样的表格:

<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

修改

在我的搜索栏中,我搜索:

“你好à”

我拥有的网址是:

?q=Hello+%E0

1 个答案:

答案 0 :(得分:0)

问题是%E0代表áANSI)编码中的Windows-1252字符,而utf-8中的html无效。

您可以通过以下方式避免此行为:

  • 您的utf-8文件以utf-8编码保存。如何执行此操作取决于您的编辑器,但您应该在&#34;另存为&#34;或&#34;首选项&#34;中寻找字符编码选项。

  • 您可以在html文件中指定<meta charset="utf-8">编码,例如将head放入form部分。

  • 如果使用上述两个步骤仍然无效,您可以强制utf-8accept-charset="UTF-8"编码方式提交数据,方法是将属性form添加到{ {1}}标记。

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

每当您进行更改时,请务必刷新原始页面,然后重新提交表单。

以下是html代码的建议开头(删除!之前的空格):

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

通过上述方法,您可以确保文档以utf-8模式运行。