简述
QUrlQuery 类提供了一种方法来操纵 URL 查询中的 key-value 对。
详细描述
QUrlQuery 用来解析 URL 中的查询字符串,像下面这样:
上述的查询字符串在 URL 中 被用来传输选项,通常解码为多个 key-value 对。其列表包含了的两个条目,键为“type”和 “color”。QUrlQuery 也适用于从查询的各个组成部分创建一个查询字符串,为了 在 QUrl::setQuery() 中使用。
解析一个查询字符串最常见的方式是在构造函数中始化它,通过传递一个查询字符串。否则,可以使用 setQuery() 函数来设置要解析的查询。该函数也可用于解析具有非标准分割符的查询,在设置它们之后使用 setQueryDelimiters() 函数。
编码的查询字符串可以再次使用 query() 获得,这需要所有的内部存储项,并使用分隔符编码字符串。
编码
QUrlQuery 中的所有 getter 函数均支持一个可选参数QUrl::ComponentFormattingOptions 类型,包括 query(),它决定如何编码数据。除了 QUrl::FullyDecoded,返回值必须被视为一个百分比编码字符串。由于某些值不能在解码形式(如控制字符,字节序列不能被解码为 UTF-8)来表达。出于这个原因,百分比字符总是由字符串“%25”表示。
处理空格和加号 (“+”)
空格应该被编码成加号 ("+")
,而如果字符本身就是加号 ("+")
,则应该被编码成百分比编码格式 (%2B)
然而,互联网规范管理 URL 不认为空格和加号字符等价。
由于这样,QUrlQuery 不会将空格字符编码为 "+"
,也不会将 "+"
解码为一个空格字符。相反,空格字符将在编码形式中呈现 "%20"