参考:https://zhidao.baidu.com/question/2057437468670456147.html
url类似: http://localhost:8080/floorsNodes/风管.json
方法:
在jquery ajax中可以对url进行2次编码,encodeURI(encodeURI(url)),
后端,对该url,解码一次,搞定!
关键代码:
1.前端
$.ajax({
// 类似这样:"./data/3dtiles/bimYIYUAN/floorsNodes/16F.json"
url: encodeURI(encodeURI(url)),
dataType: 'json',
data: {},
success: function(floor) {}
});
2.后端(我用的python3)
from urllib.parse import unquote
pathFile = unquote(pathFile)
技术细节:
1.前端:
http://localhost:8080/floorsNodes/风管.json
第一次encodeURI(url),得到:http://localhost:8080/floorsNodes/%E9%A3%8E%E7%AE%A1.json
第二次encodeURI(url),得到:http://localhost:8080/floorsNodes/%25E9%25A3%258E%25E7%25AE%25A1.json
说明:
第一次得到了,“风管”的 百分比编码。
第二次,将"%" -> "%25"。
2.后端:
后端获取的url是,http://localhost:8080/floorsNodes/%E9%A3%8E%E7%AE%A1.json
unquote后是这样的:http://localhost:8080/floorsNodes/风管.json
细节说明:
前端最后的url是,http://localhost:8080/floorsNodes/%25E9%25A3%258E%25E7%25AE%25A1.json
到了后端的url是,http://localhost:8080/floorsNodes/%E9%A3%8E%E7%AE%A1.json
可见,前端到后端,发生了一次解码操作。
这是谁干的呢?我不知道。
或许这就是,需要两次encodeURI(url)的原因,
否则,只有一次encodeURI(url),到后端会解析成乱码。