URL 编码要求和考虑事项
在构建 PTC RV&S客户端 URL 时,只需要对命令选项的值编码 (不需要对整个 URL 编码)。
PTC RV&S假定所有传入的PTC RV&S 客户端 URL 均会按 RFC 1738 编码,以确保所有 URL 数据均可转换至/自 UTF-8。据万维网联合会建议,所有编码和解码均可使用 UTF-8 编码方案以实现最高的兼容性。例如,空格字符将编码为%20。有关详情,请浏览至 http://docs.oracle.com/javase/8/docs/api/java/net/URLEncoder.html
所有非法字符的编码方式均为百分百 (%) 字符后接该字符的 ISO-Latin 代码点的两位十六进制表示形式。
下列是带有编码选项的 PTC RV&S客户端 URL 示例:
integrity://localhost:9001/im/viewissue?selection=12345&asof=%222012-01-01%2014%3a01%3a00%20z%22
其中 2012-01-01 12:01:00 z 已编码。
integrity://localhost:9001/si/viewproject?project=%2FTestProject%2Fproject.pj
其中 /TestProject/project.pj 已编码。
integrity://localhost:9001/im/viewissue?selection=12345&asof=jwWiki%20%e3%82%a2%e3%83%bc%e3%83%86%e3%82%a3%e3
integrity://localhost:9001/extended-web-ui/%2Fitems%3Fquery%3DA%2A%21-_ 已编码。
integrity://localhost:9001/extended-web-ui/%2Fitems%3Fquery%3Dquick%20query 已编码。
%82%af%e3%83%ab
其中 asof=jwWikiアーティクル 已编码
当编写生成 PTC RV&S客户端 URL 的自定义触发器脚本或自定义操作时,PTC 建议您使用诸如java.net.Encoder 等标准库对 URL 中的命令选项值进行编码。例如,可调用以下 java 编码器类进行编码:
java.net.URLEncoder.encode(some_URL, "UTF-8")
此编码器类符合 RFC 1738 (URL 规范),并可担保 PTC RV&S 客户端 URL 会在启动时通过 PTC RV&S 客户端进行正确的编码。有关详情,请浏览至 http://www.rfc-editor.org/rfc/rfc1738.txt
触发器脚本文件 changePackageNotification.js 使用此 java 类在其 PTC RV&S 客户端 URL 中对命令选项进行编码,参见以下示例:
/**
* Return a URL-encoded string version of the argument passed in.
*/
function urlEncode(arg)
{
try {
return java.net.URLEncoder.encode(arg,"UTF-8");
} catch (err) {
// Fall-through
}
// If UTF-8 failed, just use the default encoding.
return java.net.URLEncoder.encode(arg);
}
下表描述了对 PTC RV&S客户端 URL 中的命令选项值进行编码的要求和考虑事项:
字符类型
编码要求/考虑事项
ASCII 控制字符
必须对区间 00-1F 和 7F 中的所有字符编码。
保留字符
下列特殊字符为保留字符:
美元符号 ($) 编码 %24
与号 (&) 编码 %26
加号 (+) 编码 %2B
逗号 (,) 编码 %2C
正斜杠标记 (/) 编码 %2F
冒号 (:) 编码 %3A
分号 (;) 编码 %3B
等号 (=) 编码 %3D
问号 (?) 编码 %3F
@ 号 (@) 编码 %40
星号 ( * ) 编码 %2A
感叹号 ( ! ) 编码 %21
不安全字符
某些特殊字符在 URL 中有可能会误解,例如,它们可能不兼容或不可靠。PTC 建议将下列字符编码:
空格 ( ) 编码 %20 (特别是多个空格)
问号 (“”) 编码 %22
小于符号 (\<) 编码 %3C
大于符号 (\>) 编码 %3E
数字记号 (#) 编码 %23
百分比 (%) 编码 %25
左括号 ({) 编码 %7B
右括号 (}) 编码 %7D
垂直条形图/管 (|) 编码 %7C
反斜杠 (\) 编码 %5C
脱字符 (^) 编码 %5E
波形符 (~) 编码 %7E
左括号 ([) 编码 %5B
右括号 (]) 编码 %5D
重读音 (`) 编码 %60
支持的特殊字符
允许使用以下特殊字符,且无需编码:
连字符 ( - ) 编码 -
下划线 ( _ ) 编码 _
非 ASCII 字符
必须对所有非 ASCII 字符编码。这包括 ISO-Latin 集 80-FF 十六进制字符的整个上半部。
Unicode 字符
必须对所有 Unicode 字符编码。这包括 FF 上的全部内容。
这对您有帮助吗?