6. 序列化来源
6. 序列化来源
本节定义如何将来源 (origin) 序列化为 Unicode [Unicode6] 字符串以及 ASCII [RFC20] 字符串.
6.1 来源的 Unicode 序列化
来源的 unicode-serialization 是以下算法返回的值:
-
如果来源不是 scheme/host/port 三元组, 则返回字符串
null(即码点序列 U+006E, U+0075, U+006C, U+006C), 并中止这些步骤.
-
否则, 令
result为来源三元组的 scheme 部分. -
将字符串 "://" 追加到
result. -
将来源三元组的 host 部分的每个组件 (按如下方式转换) 追加到
result, 组件之间用 U+002E FULL STOP 码点 (".") 分隔:-
如果组件是 A-label, 则改用相应的 U-label (参见 [RFC5890] 和 [RFC5891]).
-
否则, 原样使用该组件.
-
-
如果来源三元组的 port 部分不同于来源三元组的 scheme 部分所给协议的默认端口:
- 将一个 U+003A COLON 码点 (":") 和给定端口的十进制表示追加到
result.
- 将一个 U+003A COLON 码点 (":") 和给定端口的十进制表示追加到
-
返回
result.
6.2 来源的 ASCII 序列化
来源的 ascii-serialization 是以下算法返回的值:
-
如果来源不是 scheme/host/port 三元组, 则返回字符串
null(即码点序列 U+006E, U+0075, U+006C, U+006C), 并中止这些步骤.
-
否则, 令
result为来源三元组的 scheme 部分. -
将字符串 "://" 追加到
result. -
将来源三元组的 host 部分追加到
result. -
如果来源三元组的 port 部分不同于来源三元组的 scheme 部分所给协议的默认端口:
- 将一个 U+003A COLON 码点 (":") 和给定端口的十进制表示追加到
result.
- 将一个 U+003A COLON 码点 (":") 和给定端口的十进制表示追加到
-
返回
result.