【问题标题】:TypeError on Cyrillic URL characters?西里尔 URL 字符上的 TypeError?
【发布时间】:2021-06-28 07:07:12
【问题描述】:

我正在使用 Jest 测试对包含西里尔字符的 URL 的 GET 请求,但它给了我以下错误:

#10 13.98     TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters
#10 13.98 
#10 13.98       at Test.request (node_modules/superagent/src/node/index.js:785:18)
#10 13.98       at Test.Object.<anonymous>.Request.end (node_modules/superagent/src/node/index.js:949:8)
#10 13.98       at Test.end (node_modules/supertest/lib/test.js:153:7)
#10 13.98       at node_modules/superagent/src/request-base.js:311:12
#10 13.98       at Test.Object.<anonymous>.RequestBase.then (node_modules/superagent/src/request-base.js:293:31)
#10 13.98 

我的代码是:

const response = await request.get("hааy.com").expect(200);

'a's 是西里尔字母。有什么想法吗?

【问题讨论】:

  • “请求路径包含未转义的字符” - 我想说正确转义它们应该可以工作,你试过吗?
  • encodeURI 域名? encodeURI("hааy.com") 产生 "h%D0%B0%D0%B0y.com"。虽然。我希望这将由发出网络请求的库自动完成。
  • 是的,我刚刚解决了这个问题。我必须对URI 进行编码并使用\u0430 而不仅仅是а。

标签: javascript testing jestjs get request


【解决方案1】:

如果以后有人遇到这个问题,我通过以下操作解决了这个问题:

const response = await request.get(encodeURI("h"+"\u0430"+"ay.com")).expect(200);

【讨论】:

  • 我认为这里不需要转义序列。这只会产生一个普通的西里尔字母“a”字符。 "\u0430" === "а"(“a”是西里尔字母)
猜你喜欢
  • 2016-05-10
  • 2016-06-15
  • 2019-07-23
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 2010-11-02
相关资源
最近更新 更多