字符编码在瞻博网络设备上的工作原理
Junos OS 配置数据和操作命令输出可能包含 7 位 ASCII 字符集之外的非 ASCII 字符。当以特定格式或在某种类型的会话中显示操作或配置数据时,软件会对这些字符进行转义和编码。软件使用等效的 UTF-8 十进制字符引用对字符进行转义或编码。
CLI 尝试在以文本、集合或 JSON 格式生成的配置数据中显示任何非 ASCII 字符。CLI 还会尝试在以文本格式生成的命令输出中显示这些字符。在例外情况下,CLI 会改为显示 UTF-8 十进制字符引用。(例外情况包括 XML 格式的配置数据和 XML 或 JSON 格式的命令输出,)在 NETCONF 和 Junos XML 协议会话中,如果请求包含非 ASCII 字符的配置数据或命令输出,则会看到类似的结果。在这种情况下,服务器为所有格式的这些字符返回等效的 UTF-8 十进制字符引用。
例如,假设设备上配置了以下用户帐户,其中包含带有波形符 (ñ) 的拉丁小写字母 n。
[edit] user@host# set system login user mariap class super-user uid 2007 full-name "Maria Peña"
以文本格式显示生成的配置时,CLI 将打印相应的字符。
[edit] user@host# show system login user mariap full-name "Maria Peña"; uid 2007; class super-user;
在 CLI 中以 XML 格式显示生成的配置时,ñ 字符将映射到其等效的 UTF-8 十进制字符引用 ñ。如果在 NETCONF 或 Junos XML 协议会话中以任何格式显示配置,则会出现相同的结果。
[edit]
user@host# show system login user mariap | display xml
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/17.2R1/junos">
<configuration junos:changed-seconds="1494033077" junos:changed-localtime="2017-05-05 18:11:17 PDT">
<system>
<login>
<user>
<name>mariap</name>
<full-name>Maria Peña</full-name>
<uid>2007</uid>
<class>super-user</class>
</user>
</login>
</system>
</configuration>
<cli>
<banner>[edit]</banner>
</cli>
</rpc-reply>
将配置数据加载到设备上时,可以使用等效的 UTF-8 十进制字符引用来加载非 ASCII 字符。