當我嘗試在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