You need to enable JavaScript to run this app.
导航
对象名称解码示例
最近更新时间:2025.10.30 15:22:13首次发布时间:2025.10.30 15:22:13
复制全文
我的收藏
有用
有用
无用
无用

在 2025 年 12 月 1 日及之后启用日志存储功能的存储桶,日志文件中的对象名称默认会进行 URL 编码。如果您的业务逻辑依赖原始的对象名称,您可能需要解码对象名称,避免因编码字符导致名称解析错误。本文通过 Python、Java 和 Go 的代码示例,介绍如何对对象名称进行解码。

Python 解码示例

from urllib.parse import unquote

encoded_object = "data%2Ffile%2F%E6%97%A5%E5%BF%97%E5%AD%98%E5%82%A8.txt"
decoded_object = unquote(encoded_object)
# decoded_object 将是 "data/file/日志存储.txt"

Java 解码示例

import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

public class LocalDemoTest {
    public static void main(String[] args) {

        String encodedObject = "data%2Ffile%2F%E6%97%A5%E5%BF%97%E5%AD%98%E5%82%A8.txt";
        // URL 编码后的对象名中,不会对 '+' 进行编码,而 URLDecoder.decode 方法会把 '+' 解码为空格,因此为避免解码错误,需先把对象名中的 '+' 替换为 '%2B'
        encodedObject = encodedObject.replace("+", "%2B");
        // decodedObject 将是 "data/file/日志存储.txt"
        try {
            String decodedObject = URLDecoder.decode(encodedObject, StandardCharsets.UTF_8.toString());
            System.out.println(decodedObject);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

Go 解码示例

import "net/url"

func main() {
    encodedObject := "data%2Ffile%2F%E6%97%A5%E5%BF%97%E5%AD%98%E5%82%A8.txt"
    // decodedObject 将是 "data/file/日志存储.txt"
    decodedObject, err := url.PathUnescape(encodedObject)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(decodedObject)
}