调用S3 SelectObjectContent报InvalidTextEncoding错,如何添加latin-1编码参数
修复方案
编码参数需要添加到InputSerialization配置项的CSV子字典中,注意boto3接口的参数首字母需要大写为Encoding,修改后的代码如下:
import boto3 # 注意原代码中boto3客户端初始化的参数写法有误,已修正为键值对格式 client = boto3.client( 's3', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name=region_name ) resp = client.select_object_content( Bucket='mybucket', Key='path_to_file/file_name.gz', ExpressionType='SQL', Expression=query, InputSerialization = { 'CSV': { "FileHeaderInfo": "Use", "Encoding": "latin-1" # 新增编码配置行 }, 'CompressionType': compressionType }, OutputSerialization = {'CSV': {}}, )
注意事项
- 若后续处理输出结果时仍出现编码异常,可在
OutputSerialization的CSV配置中同样添加"Encoding": "latin-1"参数 - latin-1编码是单字节编码,兼容所有字节序列,可避免无效应答报错,若你明确知道文件的实际编码,也可以替换为对应编码值(比如GBK、GB2312等)
内容的提问来源于stack exchange,提问作者Beginner
相关产品推荐
相关产品推荐

