ジュニパーネットワークスのデバイスでの文字エンコードの仕組み
Junos OSの設定データや運用コマンドの出力には、7 ビットの ASCII 文字セットの範囲外である非 ASCII 文字が含まれている場合があります。操作データや設定データを特定の形式で表示する場合や、特定のセッション内で表示する場合、ソフトウェアはこれらの文字をエスケープおよびエンコードします。このソフトウェアは、同等の UTF-8 10 進文字参照を使用して、文字をエスケープまたはエンコードします。
CLI は、テキスト、セット、または JSON 形式で作成された設定データ内の非 ASCII 文字を表示しようとします。また、CLI は、テキスト形式で作成されるコマンド出力に、これらの文字を表示しようとします。例外的なケースでは、CLI は代わりに UTF-8 10 進文字参照を表示します。(例外として、XML 形式の設定データおよび XML または JSON 形式のコマンド出力があります)。NETCONF および Junos XML プロトコルのセッションで、非 ASCII 文字を含む設定データやコマンド出力を要求すると、同様の結果になります。この場合、サーバーはすべての形式について、それらの文字に相当する UTF-8 10 進文字参照を返します。
例えば、ラテン語の小文字「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 10進文字参照 ñにマッピングされます。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 10 進文字参照を使って、非 ASCII 文字をロードすることができます。