javascript转到带有unicode字符的url

Posted

技术标签:

【中文标题】javascript转到带有unicode字符的url【英文标题】:javascript go to url with unicode characters 【发布时间】:2016-06-30 07:23:20 【问题描述】:

我有一个数组,里面有一些像这样的 url:

[
  "path/to/url1",
  "path/to/url2",
  "path/url/unicóde.txt"
]

我正在使用角度,ng-repeat 我创建了一个可点击的列表,执行重定向到所需的 url,但是,当我点击 unicode url 时,浏览器找不到它。

我尝试使用 encodeURI("path/url/unicóde"),但它会检索到: path/url/unic%C3%B3de.txt 未找到。相反,当我手动访问:path/url/unicóde.txt(这是在一个 ftp 中,所以,我逐个文件夹直到到达文件)浏览器中的 url 现在显示:path/url/unic%F3de.txt,这与给出的值不同我encodeURI( )

然后我如何可以点击此列表项并重定向到所需的 unicode url?

代码如下: html:

<md-list-item ng-repeat="found in foundFiles">
        <h3> found.name </h3>
        <p ng-click="openFtpLink(found.url)"> found.url</p>
    </md-list-item>

javascript

$scope.foundFiles = [...]
$scope.openFtpLink = function (ftpLink) 
    var spawn = require('child_process').spawn;
    spawn('cmd.exe', ['/c', 'start', '', ftpLink]);
;

这是一个使用 electron + angular 构建的应用程序,我想要的是当用户单击该项目时,打开他的默认浏览器并将其重定向到 url

【问题讨论】:

尝试将charset="utf-8" 添加到您的脚本标签中。 “我创建了一个执行重定向到所需 URL 的可点击列表” - 需要查看此代码,因为您似乎在 URL 解码(或缺少解码)方面做错了。 【参考方案1】:

使用 JavaScript escape() 函数。它为您提供所需的输出。

alert(escape("path/url/unicóde.txt"));

注意:escape() 函数在 JavaScript 1.5 版中已弃用。

【讨论】:

escape() 已被弃用,就像你说的那样,应该用 encodeURI() 代替,但是在这种情况下,它可以工作,而 encodeURI() 不能。谢谢你的回答!

以上是关于javascript转到带有unicode字符的url的主要内容,如果未能解决你的问题,请参考以下文章

带有 unicode 字符的 Python 正则表达式错误?

Python 和带有 Unicode 的正则表达式

JavaScript中的Unicode组成

JavaScript:Unicode 空格字符

正则表达式系列之 —— Unicode:修饰符 "u" 和类 p{...}

正则表达式系列之 —— Unicode:修饰符 "u" 和类 p{...}