我想使用NodeJS服务器加载名称为здраво.mp3
的音频文件。 (如果你想知道的话,那就是塞尔维亚语中的“zdravo”或“hello”)。
但是,NodeJS会发出%D0%B7%D0%B4%D1%80%D0%B0%D0%B2%D0%BE.mp3
请求,导致找不到该文件。
如果我将文件从桌面拖到浏览器窗口中,浏览器很乐意将其作为文件/// path /здраво.mp3加载,因此问题不在于浏览器处理Unicode字符串的方式< / p>
包含该文件链接的HTML页面在头部中有这个元标记...
<meta charset="utf-8" />
...非常高兴在页面上显示“Здраво”文本,因此Unicode字符串在浏览器中正确形成。
我猜测浏览器在发送请求之前将名称转换为ISO-8859-1,并且NodeJS服务器在文件系统中查找之前需要将其转换回Unicode。
我的问题是:我是否已经有一个模块可用于进行此转换,是否有如何使用它的示例?
解决方案:根据Edwin Dalorzo的回复,这是我对handleRequest()函数的单行修复:
function handleRequest(request, response) {
request.url = decodeURIComponent(request.url) // the fix
var pathname = url.parse(request.url).pathname
答案 0 :(得分:1)
目前尚不清楚如何接收编码的字符串,但肯定只需执行以下操作即可解码:
decodeURIComponent("%D0%B7%D0%B4%D1%80%D0%B0%D0%B2%D0%BE")
这会让你回到你的字符串"здраво"