【问题标题】:Can PARAM-VALUE contain spaces?PARAM-VALUE 可以包含空格吗?
【发布时间】:2011-11-01 05:26:02
【问题描述】:

阅读syslog rfc

6.3.3. SD-PARAM

   Each SD-PARAM consists of a name, referred to as PARAM-NAME, and a
   value, referred to as PARAM-VALUE.

参数值可以包含空格吗?或者它必须是一个单词的名字?

【问题讨论】:

    标签: unix syslog


    【解决方案1】:

    阅读该部分的其余部分:

    要支持国际字符,PARAM-VALUE 字段必须是 使用 UTF-8 编码。系统日志应用程序可以发出任何有效的 UTF-8 顺序。系统日志应用程序必须接受任何有效的 UTF-8 序列 以“最短形式”。如果控制字符是,它绝不能失败 存在于 PARAM-VALUE 中。 syslog 应用程序可以修改消息 包含控制字符(例如,通过更改值为 0 的八位字节 (USASCII NUL)到四个字符“#000”)。原因 UNICODE TR36 [UNICODE-TR36] 第 3.1 节中概述,发起人 必须以“最短形式”和收集器或中继器对消息进行编码 不得以“非最短形式”解释消息。

    在 PARAM-VALUE 中,字符 '"' (ABNF %d34)、'\' (ABNF %d92)、 和 ']' (ABNF %d93) 必须转义。这是必要的,以避免 解析错误。转义 ']' 并不是绝对必要的,但是 本规范要求避免 syslog 应用程序 实施错误。这三个字符中的每一个都必须是 分别转义为 '\"'、'\\' 和 '\]'。使用反斜杠 用于控制字符转义以与其使用保持一致 在 syslog 消息的其他部分以及在 传统的系统日志。

    反斜杠 ('\') 后跟所描述的三个字符中的任何一个都没有 被认为是无效的转义序列。在这种情况下,反斜杠 必须将其视为常规反斜杠,并将以下字符视为 一个普通的字符。因此,不得更改无效序列。

    空格字符当然可以是“有效的 UTF-8 序列”的一部分。引用的第二段提到了三个必须转义的字符;空格字符不是其中之一。

    结论:PARAM-VALUE 字段可以包含空格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      相关资源
      最近更新 更多