在 Amazon S3 中,对象键(Object Key)是标识存储桶内对象的唯一名称。其命名遵循 UTF-8 编码规范,最大长度约为 1,024 字节。

**安全字符集与可直接使用的字符**
大部分常见字符可直接用于对象键名称,无需特殊处理。这些字符包括:
- **字母数字字符**:0-9、a-z、A-Z。
- **常用符号**:感叹号 (!)、连字符 (-)、下划线 (_)、句点 (.)、星号 (*)、单引号 (')、左括号 (()、右括号 ())。

需要注意的是,虽然上述字符在 S3 中是合法的,但在某些特定场景(如下载文件)中可能会有显示差异。例如,若对象键以句点 (.) 结尾,通过 Amazon S3 控制台下载时末尾的句点会被自动移除;若需保留,应使用 AWS CLI、SDK 或 REST API。

**需要 URL 编码或特殊处理的字符**
部分字符在特定协议(如 DNS、Web)或 XML 解析器中可能引发问题,建议进行 URL 编码或使用十六进制表示:
- **分隔符与逻辑符号**:正斜杠 (/)、反斜杠 (\)、冒号 (:)、加号 (+)、空格、逗号 (,)、问号 (?)、等号 (=)、分号 (;)、美元符号 ($)、& 符号、@ 符号。
- **控制字符与非打印字符**:ASCII 码 00–1F(十进制)、7F(127 十进制)及非打印 ASCII 字符(128–255 十进制)。
- **其他特殊符号**:百分号 (%)、反引号 (`)、右方括号 (])、双引号 (")、大于号 (>)、左方括号 ([)、波浪号 (~)、小于号 (<)、井号 (#)、竖线 (|)。

**需避免使用的字符与路径规范**
为了保持一致性并防止应用程序解析错误,建议避免使用以下字符:
- 反斜杠 (\)、花括号 ({})、脱字符 (^)、重音符号 (`)、右方括号 (])、双引号 (")、大于号 (>)、左方括号 ([)、波浪号 (~)、小于号 (<)、井号 (#)、竖线 (|)。

此外,关于路径段的使用有严格限制:
- **禁止使用纯句点路径**:如 `./` 或 `../`。虽然 S3 允许解析此类路径(只要不超出非相对路径元素数量),但许多工具会将它们自动规范化,导致访问失败或行为不一致。
- **推荐做法**:避免在对象键中使用独立的 `.` 或 `..` 作为路径段。若需表示隐藏文件或备份目录,应将句点作为文件名的一部分(如 `.hidden` 或 `..backup`),而非独立的路径分隔符。

**XML 实体与换行符处理**
当通过 XML 接口(如 DeleteObjects 请求)操作对象时,必须对特定字符进行转义:
- **换行符**:回车 (\r) 需替换为 `&#13;` 或 `&#x0D;`;换行 (\n) 需替换为 `&#10;` 或 `&#x0A;`。
- **特殊符号**:单引号 (' ) 替换为 `&apos;`,双引号 (") 替换为 `&quot;`,& 符号替换为 `&amp;`,小于号 (<) 替换为 `&lt;`,大于号 (>) 替换为 `&gt;`。

**字符排序规则**
Amazon S3 按 UTF-8 字节值对对象键进行字典序排序。ASCII 字符中,特殊符号排在字母之前,大写字母排在小写字母之前;非 ASCII 字符(如中文、带重音的字母)因字节值较高,通常排在所有 ASCII 字符之后。

信息来源