Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过boto和unicode密钥名获取s3密钥_Unicode_Amazon S3_Boto - Fatal编程技术网

通过boto和unicode密钥名获取s3密钥

通过boto和unicode密钥名获取s3密钥,unicode,amazon-s3,boto,Unicode,Amazon S3,Boto,我正在使用一个post请求,该请求引用可能包含非英语字符的s3,例如: {'key': 'náme'} 当使用json.loads加载帖子正文时,它将变为: {u'key': u'n\xe1me'} 现在不幸的是,给定这个unicode键,boto没有抓取对象(我已经确认对象náme确实存在于所需的bucket中) 是否有办法通过boto获取所需对象,或者我是否需要查看其他选项,例如强制实施更为boto友好的命名策略 更新: 因此,从我可以收集到的json.loads()编码是拉丁文1,只需

我正在使用一个post请求,该请求引用可能包含非英语字符的s3,例如:

{'key': 'náme'}
当使用json.loads加载帖子正文时,它将变为:

{u'key': u'n\xe1me'}
现在不幸的是,给定这个unicode键,boto没有抓取对象(我已经确认对象
náme
确实存在于所需的bucket中)

是否有办法通过boto获取所需对象,或者我是否需要查看其他选项,例如强制实施更为boto友好的命名策略

更新:


因此,从我可以收集到的json.loads()编码是拉丁文1,只需在终端中调用
náme
,就会返回utf-8编码版本(
n\xc3\xa1me
),但我不熟悉boto在列出键时使用的编码(
u'na\u0301me'
)我希望通过识别这一点,可以很容易地将拉丁语编码转换为未知编码,这样当从发布的数据中获得拉丁语版本时,我就可以开始访问密钥。

URL中如何编码?我想知道S3是否需要百分比编码的utf8
%C3%A1
。在检查控制台生成的URL时,使用控制台下载对象可能是一个有用的练习。如上所述,S3将使用utf-8字符映射以百分比编码显示unicode键名,这是%C3%A1,很有趣,它不包含
%C%A1
,但显示为
na%CC%81me
。但是,boto将密钥列为
u'na\u0301me.doc'
(来自
s3Client.list\u objects
)此编码方法是调用组合重音。老实说,我宁愿要求用户将对象密钥保存为sha256哈希,并将原始文件名放入S3对象元数据中。处理各种用户编码风格几乎是不可能的。或者您可以在域名上强制使用RFC方法,所有名称仅以ASCII显示,所有unicode将使用punycode转换器进行转换。当您看到xn-prefix时,您必须启动转换器。