QUrl url("bword://blood transfusion");
QString res = url.toString();
为什么我得到字符串“bword:”而不是“bword://输血”?如何检索一个有空格的QUrl字符串?
如何从QUrl中获取字符串“bword:// blood transfusion”?
QUrl url("bword://blood transfusion");
QString res = url.toString();
为什么我得到字符串“bword:”而不是“bword://输血”?如何检索一个有空格的QUrl字符串?
如何从QUrl中获取字符串“bword:// blood transfusion”?
URL语法可能相当复杂,请参阅此Wikipedia article。问题是你的URL不包含权威字段,它只有方案字段“bword”和路径“//输血”。并根据RFC3986 - Uniform Resource Identifier (URI): Generic Syntax:
当权限不存在,则 路径不能有两个斜杠 字符(“//”)。
因此,您的网址无效(尽管isValid()
返回true)。将您的代码更改为:
QUrl url("bword:/blood transfusion");
QString res = url.toString();
'bword:输血'也可以工作(假设系统对付URN)。 – 2010-09-13 15:41:35
确实,http:/ foo bar的工作原理,http:// foobar也是如此。 QUrl中的错误似乎是它部分解析了URL - IMO在解析失败时应该创建一个完全空的无效对象(QUrl :: isValid()== false)。 – 2010-09-13 17:49:26
谢谢你的解决方案。我得到的网址来自stardict词典文件的数据文件。也许我只能重建字典来更改网址。 – simpzan 2010-09-15 12:01:07
看起来像是一个Qt bug ... – 2010-09-13 12:56:22
检查url.isValid()是true还是false。并尝试没有空间。 – 2010-09-13 14:41:49