【问题标题】:Weird character in chrome when sending URL发送 URL 时 chrome 中的奇怪字符
【发布时间】:2015-09-04 17:53:19
【问题描述】:

我在尝试在 google-chrome 中打开本地文件时遇到了一些麻烦,因为它在 google chrome 中给了我一个奇怪的 URL,但在控制台中打印得很好。

这是我的代码:

int subId = 902 ;
system(("google-chrome "+localURL+"initialFr.html?id="+to_string(subId)).data());
std::cout << ("google-chrome "+localURL+"initialFr.html?id="+to_string(subId)).data() << std::endl 

这是我在控制台中得到的输出:

file:///home/lonni/Questionnaire/initialFr.html?id=902

这是我在chrome中得到的地址:

file:///home/lonni/Questionnaire/initialFr.html%3Fid=902

我在 ubuntu 上使用 c++11(因此是 .data())。

你们知道这是哪里来的吗?

提前致谢

【问题讨论】:

  • 只是 URI 转义。我不知道从命令行运行 Chrome 的来龙去脉,但只需运行 --help 或类似的东西来了解如何使用它。当然,期望 Chrome 简单地逐字获取您的 URI 有点牵强。 :) 无论如何,这最终与 C++ 完全无关(正如您已经证明的那样);毫无疑问,您可以从终端复制此内容。因此,我建议将其重写为关于 [SuperUser.SE] 上的命令行 Chrome 调用或其他内容的问题。
  • 好吧,那我就这么做。我应该把问题留在这里吗?

标签: c++ url c++11 system-calls


【解决方案1】:

file: URL 架构不支持 HTTP 架构参数传递。这些参数旨在由 HTTP 服务器解释。

如果需要传参数,可以使用anchor,例如:

file:///home/lonni/Questionnaire/initialFr.html#902

【讨论】:

  • 呃好点。因此,很自然,Chrome 会自动对查询字符串分隔符进行 URI 转义。因为没有查询字符串! :D
  • 感谢您的提示。它几乎可以工作,我将 # 转换为“%23”
  • 从技术上讲,file: URL 方案也不支持锚点。访问file: URL 中的锚点取决于平台/浏览器。
猜你喜欢
  • 2014-10-03
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 2013-04-09
  • 2014-03-03
  • 1970-01-01
相关资源
最近更新 更多