当我尝试在S3上使用特殊字符(如‘’ “” – — é
)在S3上创建文件时,会在文件上写入不正确的数据,并在文件中出现奇怪的字符。我正在使用亚马逊提供的官方aws-sdk
ruby gem。下面是示例代码:将文件写入S3时的字符编码问题
@bucket = AppConfig.s3_bucket
@s3 = AWS::S3.new
file = @s3.buckets[@bucket].objects['amit/test']
file.write("‘test1’ “test2” test–test—test3 é-test", :acl => :public_read)
我也曾尝试:
file.write("‘test1’ “test2” test–test—test3 é-test", :acl => :public_read, :content_type => 'text/html')
file.write("‘test1’ “test2” test–test—test3 é-test", :acl => :public_read, :content_type => 'text/plain')
file.write("‘test1’ “test2” test–test—test3 é-test", :acl => :public_read, :content_type => 'text/plain', :content_encoding => 'utf-8')
输出文件看起来是这样的: ‘test1’ “test2†test–test—test3 é-test
我与AWS-SDK版本1.11.1
和1.65.0
尝试。
作品!但是将content_type设置为'text/html'不起作用,并且也没有设置':content_encoding =>'utf-8''参数,但是将它与':content_type'一起传递,正如您所建议的那样工作正常!可能AWS文档有问题,':content_encoding'不能按照建议工作。 –
@amit_saxena'content_encoding'用于压缩之类的东西(例如,你可能有一个头文件'Content-encoding:gzip')。 HTML的另一种替代方法是将content_type设置为text/html(即没有字符集= UTF-8),并在HTML本身中使用一个''标签,但通常你会想如果可以的话,在标题中有编码。 – matt