Javascript encodeURI组件和encodeURI

Javascript encodeURI组件和encodeURI,javascript,utf-8,character-encoding,Javascript,Utf 8,Character Encoding,我正在尝试对URL中的法语字符进行编码 url是用javascript构建的,然后我使用window.open打开url 比如说, var alt_title='Thierry Frémaux: Les confiden' window.open('http://example.com/alt_title'=+encodeURIComponent(altcatit)) 窗口。打开(encodeURI('http://example.com/alt_title=“+encodeURICompon

我正在尝试对URL中的法语字符进行编码

url是用javascript构建的,然后我使用
window.open
打开url

比如说,

var alt_title='Thierry Frémaux: Les confiden'
  • window.open('http://example.com/alt_title'=+encodeURIComponent(altcatit))

  • 窗口。打开(encodeURI('http://example.com/alt_title=“+encodeURIComponent(altcatit))

  • 当执行1.时,我看不到新弹出窗口的url中编码的法语字符

    当执行2.时,我确实看到它们被编码

    你能告诉我为什么我需要对它们进行两次编码,以便它们在新弹出的URL中显示为编码的吗

    这是编码URL中特殊字符的正确方法吗


    修正了输入错误。对不起!你在找这个吗

    var s = 'Thierry Frémaux: Les confiden'
    var url = 'http://example.com/?alt_title=' + encodeURIComponent(s)
    
    encodeURIComponent():假定其参数是URI的一部分(如协议、主机名、路径或查询字符串)。因此,它将转义用于分隔URI部分的标点字符


    encodeURI():用于对现有url进行编码
    window.open()中的变量
    与您分配的不一样,并且您在分配中缺少围绕值的引号。您没有因此得到语法错误吗?您在服务器脚本中看不到编码字符,因为在将参数传递给脚本之前,这些字符会自动解码。很难理解发生了什么,因为您有不匹配的代码段,并且第一个代码中存在语法错误。如果计划对字符串进行编码,则不应将编码字符(如
    %20
    )放入字符串中,因为它们将进行双重编码(在2中进行三重编码)。这是关于男人的什么?<代码>=+
    ?只要使用
    +
    !是的。当我实际打开这个窗口时。打开(''+encodeURIComponent(''Thierry Frémaux:Les confiden'))这些字符在新弹出的url中似乎没有编码。但是当我这样做时,window.open(encodeURI(''+encodeURIComponent(''+encodeURIComponent(''Thierry Frémaux:Les confiden'))é是否正确编码这是因为浏览器在显示前对其进行解码?检查HTTP控制台,查看请求是否具有正确的url。哦,我明白了。因此,如果我希望字符显示为url中的编码字符,我必须对url进行两次编码?谢谢!你说得对。它们在请求标头中进行编码,浏览器可能会对其进行解码在显示url之前。两次编码可以解决问题吗?如果我编码两次,浏览器将显示编码的url,然后我可以在服务器上解析get参数时再次“解码”它?